哈希表
考点:
class Solution:
    def firstUniqChar(self, s: str) -> str:
        ch_dict = {}
        for i in range(len(s)):
            cur = s[i]
            if cur in s[:i]:
                continue
            if not cur in s[i+1:]:
                return cur
        return " "
考点:
class Solution:
    def findRepeatNumber(self, nums: List[int]) -> int:
        n = len(nums)
        nums.sort()
        for i in range(1, n):
            if nums[i] == nums[i-1]:
                return nums[i]
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        result_dict = collections.defaultdict(list)
        for istr in strs:
            istr_list = list(istr)
            istr_list.sort()
            # print("".join(istr_list))
            result_dict["".join(istr_list)].append(istr)
        result = []
        for _, values in result_dict.items():
            result.append(values)
        return result
class WordsFrequency:
    def __init__(self, book: List[str]):
        
        self.word_fre = {}
        for word in book:
            if word in self.word_fre:
                self.word_fre[word] = self.word_fre[word] + 1
            else:
                self.word_fre[word] = 1
    def get(self, word: str) -> int:
        return self.word_fre.get(word, 0)
5、剑指 Offer 48. 最长不含重复字符的子字符串
考点:
1、注意双指针的序列长度要>=2,等于0和1 需要使用特殊值处理
2、for 循环right指针,range范围是(1, len(s)+1)
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        if len(s) == 0:
            return 0
        
        if len(s) == 1:
            return 1
        
        result = 0
        left = 0 
        for right in range(1, len(s)+1):
            # print(s[left:right])
            # 不重复
            if len(set(s[left:right])) == right - left:
                if right - left > result:
                    result = right - left
                continue
            
            # 重复
            while True:
                left = left + 1
                if left == right:
                    break
                if len(set(s[left:right])) == right - left:
                    if right - left > result:
                        result = right - left
                    break
        return result
6、726. 原子的数量
                    
                
                
            
        
浙公网安备 33010602011771号