知识点
题目
- 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 - 示例:
输入: s = “anagram”, t = “nagaram”
输出: true
解法①
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
record=[0]*26
n,m=len(s),len(t)
for i in range(n):
record[ord(s[i])-ord('a')]+=1
for j in range(m):
record[ord(t[j])-ord('a')]-=1
for i in range(26):
if record[i]!=0:
return False
return True
解法②
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
from collections import defaultdict
s_dict = defaultdict(int)
t_dict = defaultdict(int)
for x in s:
s_dict[x] += 1
for x in t:
t_dict[x] += 1
return s_dict == t_dict
- 两个数组的交集
- 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
- 示例:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的
解法①
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
return list(set(nums1) & set(nums2))
解法②
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
result=set()
record=[0]*1001
for num in nums1:
record[num]=1
for num in nums2:
if record[num]==1:
result.add(num)
return list(result)
- 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
- 示例:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
解法:
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
result=[]
from collections import defaultdict
record=defaultdict(int)
for i in nums1:
record[i]+=1
for j in nums2:
if record[j]>0:
result.append(j)
record[j]-=1
return result
- 编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。 - 示例:
输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
class Solution:
def isHappy(self, n: int) -> bool:
result=set()
def calculate(num):
sum_=0
while num:
sum_+=(num%10)**2
num =num//10
return sum_
while True:
n=calculate(n)
if n==1:
return True
if n not in result:
result.add(n)
else:
return False