题目来源:https://leetcode.com/problems/valid-anagram
题目难度:Easy
解答1[Java]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Solution { public boolean isAnagram(String s, String t) { if(s.length() != t.length()) return false; int[] arr = new int[128]; for(char c : s.toCharArray()){ arr[c]++; } for(char c: t.toCharArray()){ arr[c]--; if(arr[c]<0) return false; } return true; } }
|
思路
这个解法只适合于 ASCII 字符集的字符串处理。不适合处理 Unicode 字符集的字符串。题目中额外提示了可以考虑算法是否适用于 Unicode 字符集。但是 LeetCode 的测试用例只有 ASCII 字符集的字符串,所以这个算法也可以通过。
解答2[Java] :
1 2 3 4 5 6 7 8 9 10 11 12
| class Solution { public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { return false; } char[] str1 = s.toCharArray(); char[] str2 = t.toCharArray(); Arrays.sort(str1); Arrays.sort(str2); return Arrays.equals(str1, str2); } }
|
思路
先排序,再对比。这个方式也适用于 Unicode 字符集。
参考资料
- java – 在String中遍历所有字符的最快方法