代码随想录第六天刷题
今日主攻为哈希表:
第一题为:有效的字母异位词
卡哥分别给出了三种答案,说实话,我不太理解,问了AI,第一种适合面试竞赛,第二种适合理解哈希表,第三种适合实际项目
我以第一种为例进行了复制
def isAnagram(self, s: str, t: str) -> bool:
record = [0] * 26 #记录(指作为一个单位来处理的一组相连的数据)
for i in s:
#并不需要记住字符a的ASCII,只要求出一个相对数值就可以了
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:
#record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。
return False
return True
重点理解
- 第一个循环:把字符串s的字母放入"篮子"(加计数) 第二个循环:从"篮子"中取出字符串t的字母(减计数) 第三个循环:检查"篮子"是否空了(是否平衡)
- ord()返回的是字符的Unicode码点,对英文来说就是ASCII码
查看15道真题和解析