剑指 Offer II 032. 有效的变位词
大约 1 分钟
剑指 Offer II 032. 有效的变位词
- 标签:哈希表、字符串、排序
- 难度:简单
题目链接
题目大意
给定两个字符串 s
和 t
。
要求:判断 t
和 s
是否使用了相同的字符构成(字符出现的种类和数目都相同,字符顺序不完全相同)。
解题思路
- 先判断字符串
s
和t
的长度,不一样直接返回False
; - 如果
s
和t
相等,则直接返回False
,因为变位词的字符顺序不完全相同; - 分别遍历字符串
s
和t
。先遍历字符串s
,用哈希表存储字符串s
中字符出现的频次; - 再遍历字符串
t
,哈希表中减去对应字符的频次,出现频次小于0
则输出False
; - 如果没出现频次小于
0
,则输出True
。
代码
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(s) != len(t) or s == t:
return False
strDict = dict()
for ch in s:
if ch in strDict:
strDict[ch] += 1
else:
strDict[ch] = 1
for ch in t:
if ch in strDict:
strDict[ch] -= 1
if strDict[ch] < 0:
return False
else:
return False
return True