06天【代码随想录算法训练营34期】 第三章 哈希表part01(● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和)

242.有效的字母异位词
思路:26位的array,每个分别对应a, b, c..., z,如果遇到一个字母就++,如果两个array一样则为anagram

hint: to initiate an array with n elements carrying value 0:

arr=[]
arr = [0 for i in range(n)] 
print(arr)
class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        anagram_table = [0 for i in range(26)]
        for i in range(len(s)):
            anagram_table[ord(s[i]) - ord('a')] += 1
        for i in range(len(t)):
            anagram_table[ord(t[i]) - ord('a')] -= 1
        print(anagram_table)
        if anagram_table == [0 for i in range(26)]:
            return True
        else:
            return False

349. 两个数组的交集
学会set的用法,

a = set()
b = {'a', 'b'}
a.add('c')
b.remove('a')
class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        table = set()
        result = set()
        for i in range(len(nums1)):
            table.add(nums1[i])
        for i in range(len(nums2)):
            if nums2[i] in table:
                result.add(nums2[i])
        return result

202. 快乐数
认真读题,巧用辅助function

class Solution:
    def getSum(self, num: int) -> int:
        result = 0
        while num > 0:
            result += (num % 10) ** 2
            num = num // 10
        return result
    
    def isHappy(self, n: int) -> bool:
        table = set()
        while True:
            n = self.getSum(n)
            if n == 1:
                return True
            else:
                if n in table:
                    return False
                else:
                    table.add(n)

1. 两数之和
还是巧用哈希表,这次用的是dictionary

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        table = dict()
        for i in range(len(nums)):
            if nums[i] in table:
                return [i, table[nums[i]]]
            table[target - nums[i]] = i
        return []
posted @ 2024-03-25 15:29  MiraMira  阅读(9)  评论(0)    收藏  举报