day5

79 阅读1分钟

创建空数组

字符串的遍历循环

ord()函数

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        record = [0] * 26
        for i in s:
            #并不需要记住字符a的ASCII,只要求出一个相对数值就可以了
            record[ord(i) - ord("a")] += 1
        for i in t:
            record[ord(i) - ord("a")] -= 1
        for i in range(26):
            if record[i] != 0:
                #record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。
                return False
        return True

字典的使用

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        val_dict = {}
        ans = []
        for num in nums1:
            val_dict[num] = 1

        for num in nums2:
            if num in val_dict.keys() and val_dict[num] == 1:
                ans.append(num)
                val_dict[num] = 0
        
        return ans

赋值语句一定要注意先后顺序

数值各个位上的单数操作要熟悉

class Solution:
    def isHappy(self, n: int) -> bool: 
        def caculate(sum):
            c = 0
            a = sum
            while(a != 0):
                b = a%10
                a = a//10
                c = c + b**2
            return c
        s = {n}
        while True:
            n = caculate(n)
            if(n in s and n == 1):
                return True
            elif(n in s and n != 1):
                return False
            else:
                s.add(n)

想想与双循环的暴力解法相比,能否用哈希来改进。

Python enumerate() 函数 | 菜鸟教程 (runoob.com)来在循环中同时获取数组的位置和数值。

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        s = set(nums)
        for i in range(len(nums)):
            if target-nums[i] in s:
                for j in range(i+1,len(nums)):
                    if nums[j] == target-nums[i] and i!=j:
                        return [i,j]