KW50/20刷题总结:使用Python-哈希表——字符串中的第一个唯一字符、单词替换

KW50/20:学习了哈希表的知识,一共练习1个题目,现在总结如下。

第一题:字符串中的第一个唯一字符,给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

  1. 思路:首先想到的是使用字典存储每个字符出现的次数,然后再次遍历字符串,找到出现次数为1的字符并返回索引。代码如下:
class Solution:
    def firstUniqChar(self, s: str) -> int:
        d = {
     }
        for c in s:
            if c not in d:
                d[c] = 1
            else:
                d[c] += 1

        for index, c in enumerate(s):
            if d[c] == 1:
                return index
        
        return -1

第二题:单词替换,给定一个由许多词根组成的词典和一个句子。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。

  1. 思路:判断单词的前缀是不是词根,是的话就用词根替换该单词。代码如下:
class Solution:
    def replaceWords(self, dictionary: List[str], sentence: str) -> str:

        rootset = set(dictionary)

        def replace(word):
            for i in range(1, len(word)):
                if word[:i] in rootset:
                    return word[:i]
            return word

        return ' '.join(map(replace, sentence.split(' ')))

你可能感兴趣的:(字符串,leetcode,python,哈希表)