需要判断是不是存在重复就用哈希表,set(dict)
242.有效的字母异位词
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
charDict = dict()
for char in s:
charDict[char] = charDict.get(char, 0) + 1
for char in t:
char_number = charDict.get(char,0)
if char_number == 0:
return False
else:
charDict[char] = char_number - 1
for key, value in charDict.items():
if value != 0:
return False
return True
349. 两个数组的交集
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
numberSetA = set()
for num in nums1:
numberSetA.add(num)
resSet = set()
for num in nums2:
if num in numberSetA:
resSet.add(num)
return list(resSet)
202. 快乐数
class Solution:
def isHappy(self, n: int) -> bool:
calculateSet = set()
newNum = 0
while n != 1:
newNum = 0
while n != 0:
temp = n % 10
newNum += temp * temp
n = n // 10
if newNum in calculateSet:
return False
calculateSet.add(newNum)
n = newNum
return True
1. 两数之和
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
# 使用dict,里面存放list(标明这个数字出现的下标)
numDict = dict()
for index, num in enumerate(nums):
if num not in numDict:
numDict[num] = [index]
else:
numDict[num].append(index)
# print(numDict)
# print(numDict)
for index, num in enumerate(nums):
reduceNum = target - num
numberList = numDict.get(reduceNum,[])
if numberList == []:
continue
else:
for numIndex in numberList:
if numIndex == index:
continue
else:
return [index, numIndex]