[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.

Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?

代码

直接字符串排序,然后判断是否相等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class  {
public boolean isAnagram(String s, String t) {

if(null == s) return null == t;
return sort(s).equals(sort(t));
}

private String sort(String s){
char[] content = s.toCharArray();
Arrays.sort(content);

return new String(content);
}
}

判断两个字符出现的字符和次数是否相等

1
2
3
4
5
6
7
8
9
10
11
12
public class  {
public boolean isAnagram(String s, String t) {

if(s.length() != t.length() ) return false;
int[] alphas = new int[26];
for(int i = 0; i < s.length(); i++) alphas[s.charAt(i) - 'a']++;
for(int j = 0; j < t.length(); j++) alphas[t.charAt(j) - 'a']--;
for(int alpha:alphas) if(alpha != 0) return false;
return true;
}

}