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.
这道题首先还是要先明确Anagram的定义,除了字母的排序顺序可以不一样外,其他都得一样。
因为如果两个String互为anagram,他们的length是相同的。
所以我们可以直接新建一个length为26的int[]。(题目说了只考虑小写字母,所以26就可以了)。
然后对于s,识别到新的字母的值就+进这个int[],而对于t,识别到新的字母的值就从int[]中移除。
如果这两个互为anagram的话,那么这个计算完成后,这个int[]的值肯定是为0的。
代码如下。~
public class Solution { public boolean isAnagram(String s, String t) { if(s.length()!=t.length()){ return false; } int[] test = new int[26]; for (int i = 0; i < s.length(); i++){ test[s.charAt(i) - ‘a‘]++; } for (int i = 0; i < t.length(); i++){ test[t.charAt(i) - ‘a‘]--; } for(int i=0;i<test.length;i++){ if(test[i]!=0){ return false; } } return true; } }
原文:http://www.cnblogs.com/orangeme404/p/4735956.html