class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
# 两个数组的交集
return set(nums1) & set(nums2)
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
from collections import Counter
dic1=dict(Counter(nums1))
dic2=dict(Counter(nums2))
res=[]
for key,value in dic1.items():
if key in dic2.keys():
min_value=min(value,dic2[key])
for i in range(min_value):
res.append(key)
return res
还可以先建立一个字典,然后遍历另一个数组,判定数组中的值是否在字典中,如果在的话,那么就减一。
思考题需要再看看。
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
# 给定两个字符串s和t,编写一个函数判定t是否是s的字母异位词
from collections import Counter
return dict(Counter(s))==dict(Counter(t))
思考题不懂。
class Solution:
def isHappy(self, n: int) -> bool:
# 判定一个数字是否是快乐数
s=set()
while n!=1:
sum_num=0
for num in list(str(n)):
sum_num+=int(num)**2
if sum_num in s:
return False
else:
s.add(sum_num)
n=sum_num
return True
这题需要注意的就是判定这个sum是否出现过,如果出现过,那么就证明是False。原理我没太想明白。
取一个数字的不同的位数分别计算的一般方法:
n%10,取出最后一位
n//10,删除最后一位
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
return list(map(s.index,s))==list(map(t.index,t))
map解法
class Solution:
def wordPattern(self, pattern: str, str: str) -> bool:
# 给定规律pattern和字符串str,判断str是否遵循相同的规律
str = str.split()
print(list(map(pattern.index,pattern)))
print(list(map(str.index,str)))
return list(map(pattern.index,pattern)) == list(map(str.index,str))
同样是map解法
class Solution:
def frequencySort(self, s: str) -> str:
# 给定一个字符串,将字符按照出现频率降序排列
from collections import Counter
dic=dict(Counter(s))
dic=dict(sorted(dic.items(), key=lambda x: x[1], reverse=True))
print(dic)
res=''
for key,value in dic.items():
for i in range(value):
res+=str(key)
return res