一 给定两个字符串s和t,判断t是否为s的重新排列后组成的单词
- s = "anagram", t = "nagaram", return True
- s = "rat", t = "car", return False
- leetcode地址:https://leetcode.com/problems/valid-anagram/description/
解法一:排序,O(n*logn)
class Solution: def isAnagram(self, s, t): """ :type s: str :type t: str :rtype: bool """ ss = list(s) tt = list(t) ss.sort() tt.sort() return ss == tt """ 输入:"anagram"、"nagaram" 输出:true Runtime: 32 ms """
排序方法简写如下:
class Solution: def isAnagram(self, s, t): return sorted(list(s)) == sorted(list(t))
解法二:判断字母数量一致,时间复杂度O(n)
class Solution: def isAnagram(self, s, t): """ :type s: str :type t: str :rtype: bool """ dict1 = {} # 用字典来维护字符的数量 dict2 = {} for ch in s: dict1[ch] = dict1.get(ch, 0) + 1 # 没有就新建,有就加1 for ch in t: dict2[ch] = dict2.get(ch, 0) + 1 return dict1 == dict2 """ 输入:"anagram","nagaram" 输出:true Runtime: 32 ms """