242.有效的字母异位词
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
map=[0] * 26
for ss in s:
map[ord(ss) - ord("a")] += 1
for tt in t:
map[ord(tt) - ord("a")] -= 1
for i in range(26):
if map[i] != 0:
return False
return True
用哈希表记录字母的个数 前后不一致的则返回False。
注:其中ord()是Python中的一个库函数,用于从给定字符值中获取数字值,它接受一个字符并返回一个整数,即用于将字符转换为整数,即用于获取ASCII给定字符的值 。
349. 两个数组的交集
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
set1 = set(nums1)
set2 = set(nums2)
return list(set1 & set2)
用python比较简洁 先把List转换成集合 求交集 再把交集转换成集合
注:python中集合相关用法
(1)交集 print(a & b)
(2)差集 print(a - b)
(3)并集 print(a | b)
202. 快乐数
class Solution:
def isHappy(self, n: int) -> bool:
def getsum(num: int) -> int:
sum = 0
while num:
sum += (num % 10) * (num % 10)
num = num // 10
return sum
m = set()
while 1:
n = getsum(n)
if n == 1:
return True
if n in m:
return False
else:
m.add(n)
需要注意的点是:返回False的条件是进入了循环 判断进入循环 就是用set存sum 如果出现了集合里有的sum就是进入了循环 返回False
1. 两数之和
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
rec = dict()
for index, value in enumerate(nums):
if target - value in rec:
return rec[target - value], index
else:
rec[value] = index
熟练使用字典以及enumerate函数