你的位置:首页 > Java教程

[Java教程][LeetCode] Valid Anagram


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;  }}