242有效的字母异位
运用哈希表来解决
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
record = [0]*26
for i in s:
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:
return False
return True
349两个数组的交集
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:
#如果第二个数组里的数在之前的字典里,并且记录的数为1,放到新的列表中
ans.append(num)
val_dict[num] = 0
return ans
202快乐数
这道题的要点就是如果重复了就不符合要求,如果不重复
class Solution:
def isHappy(self, n: int) -> bool:
def cal_happy(num):
sum = 0
#从个位开始依次求和
#用来计算当前的sum值
while num > 0:
sum += (num % 10) ** 2
num = num // 10
return sum
record = set() #用一个集合记录数据
while True:
n = cal_happy(n)
if n == 1:
return True
if n in record: #检查当前的sum值是否在当前的set里面
return False
else:
record.add(n)
1.两数之和
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
records = dict()
for index, value in enumerate(nums):
if target - value in records: # 遍历当前元素,
return [records[target- value], index]
records[value] = index # 遍历当前元素,并在map中寻找是否有匹配的key
return []