
问题描述
解法
分析
Python 实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class : def isAnagram(self, s, t): """ :type s: str :type t: str :rtype: bool """ counter = dict() for c in s: counter[c] = counter.get(c, 0) + 1 for c in t: if not counter.get(c, 0): return False counter[c] -= 1 return sum(counter.values()) == 0
|
Java 实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
class { public boolean isAnagram(String s, String t) { Map<Character, Integer> counter = new HashMap<>(); for(char c : s.toCharArray()){ counter.put(c, counter.getOrDefault(c, 0)+1); } for(char c : t.toCharArray()){ int freq = counter.getOrDefault(c, 0); if(freq==0){ return false; } counter.put(c, freq-1); } int sum = 0; for(int f : counter.values()){ sum += f; } return sum==0; } }
|
时间复杂度
O(n).
空间复杂度
O(1).
链接
242. Valid Anagram
242. 有效的字母异位词
(English version) Algorithm Notes: Leetcode#242 Valid Anagram
近期评论