题目描述
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
说明: 你可以假设字符串只包含小写字母。
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
我的解法——哈希字典(AC)
- 把计数存到字典
- 时间空间复杂度均为O(n)。
- 使用散列表而不是固定大小的计数器。想象一下,分配一个大尺寸的数组来适应整个unicode字符范围,这个数字可能会超过100万。哈希表是更通用的解决方案,可以适应任何范围的角色。
- Beat73%
class Solution:
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
dic1 = {}
dic2 = {}
for letter in s:
if(letter in dic1):
dic1[letter] += 1
else:
dic1[letter] = 1
for letter in t:
if(letter in dic2):
dic2[letter] += 1
else:
dic2[letter] = 1
if(len(dic1) != len(dic2)):
return False
for letter in dic2:
if(letter not in dic1 or dic2[letter] != dic1[letter]):
return False
return True
参考答案
- https://leetcode.com/problems/valid-anagram/solution/