leetcode 242.有效的字母异位词(python)
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
方法1:
暴力, sort(), 0(nlogn)
#
# @lc app=leetcode.cn id=242 lang=python
#
# [242] 有效的字母异位词
#
# @lc code=start
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
if len(s) != len(t):
return False
str1 = list(s)
str2 = list(t)
str1.sort()
str2.sort()
return ''.join(str1) == ''.join(str2)
方法2:
Hash, map, 统计每个字符的频次
#
# @lc app=leetcode.cn id=242 lang=python
#
# [242] 有效的字母异位词
#
# @lc code=start
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
if len(s) != len(t):
return False
counter = {}
str1 = list(s)
str2 = list(t)
for str in str1:
num = 1
if str in counter:
num = counter[str] + 1
counter[str] = num
for str in str2:
num = -1
if str in counter:
num = counter[str] - 1
counter[str] = num
for count in counter.values():
if count != 0:
return False
return True