Leetcode原题链接:有效的字母异位词
一、暴力解法
1、思路
- 创建包含两字符串所有字母的两个字典。
- x字典统计s中字母出现的次数,y字典统计t中字幕出现的次数。
- 对比x和y字典对应字母次数是否相同。
2、代码
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
x = {}
y = {}
for i in s:
x[i] = 0
y[i] = 0
for j in t:
y[j] = 0
x[j] = 0
for i in s:
x[i] += 1
for j in t:
y[j] += 1
for i in x:
if x[i] != y[i]:
return False
return True
二、哈希表解法
1、思路
- 小写字母一共26个,可将数组当作哈希表。
- 创建全0字母数组,运用ascall码相减得到字母对应数组位置。
- 统计s中字母出现次数计入数组(+1);统计t中字母出现次数计入数组(-1)。
- 验证字母数组是否全0。
2、代码
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 record:
if i != 0:
return False
return True