Valid Anagram
题目:难度(Easy)
Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
Note:
You may assume the string contains only lowercase alphabets.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
Tags:Hash Table, Sort
分析:
法1:排序,时间复杂度是O(nlogn),排序的时间。注意:s1 = list(s).sort() s1并不会被赋值,因为list.sort()是原地排序没有返回值;另外也不用写成s1=sorted(list(s)),因为sorted()接收可迭代对象为参数包括string类型,返回list。
代码实现:
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
分析:题目已经告知串中仅含有小写字母
"""
if len(s) != len(t):
return False
s1 = sorted(s)
t1 = sorted(t)
return s1 == t1
#写成一句话return sorted(s) == sorted(t)
法2:Hashtable,时间复杂度是O(n)
代码实现:
class Solution(object):
def isAnagram(self, s, t):
if len(s) != len(t):
return False
from collections import Counter
hash = Counter(s)
for ch in t:
if hash[ch]>0:
hash[ch] -= 1
else:
return False
return True
#写成一句话return Counter(s).items() == Counter(t).items()