1、题目描述
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
2、代码详解
哈希表
class Solution(object):
def isAnagram(self, s, t):
# 手工构建哈希表
dict1 = [0]*26
dict2 = [0]*26
for item in s:
dict1[ord(item) - ord('a')] += 1 # 自定义哈希算法,ord()返回对应的 ASCII 数值
for item in t:
dict2[ord(item) - ord('a')] += 1
return dict1 == dict2
class Solution(object):
def isAnagram(self, s, t):
# map : 底层哈希表
dict1 = {}
dict2 = {}
for item in s:
dict1[item] = dict1.get(item, 0) + 1 # dict.get(key, default=None) 如果key的value不存在,返回default
for item in t:
dict2[item] = dict2.get(item, 0) + 1
return dict1 == dict2
set
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(t) != len(s):
return False
c = set(t)
for i in c:
if t.count(i) != s.count(i):
return False
return True
其他方法
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
return sorted(s) == sorted(t)