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?
package leetcode;
public class Valid_Anagram_242 {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()){
return false;
}
int n=s.length();
int[] chars1=new int[128];
int[] chars2=new int[128];
char[] ar1=s.toCharArray();
for(int i=0;i<n;i++){
chars1[ar1[i]]++;
}
char[] ar2=t.toCharArray();
for(int i=0;i<n;i++){
chars2[ar2[i]]++;
}
for(int i=0;i<128;i++){
if(chars1[i]!=chars2[i]){
return false;
}
}
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Valid_Anagram_242 v=new Valid_Anagram_242();
System.out.println(v.isAnagram("anagram", "nagaram"));
}
}
大神思路相同,解法更帅更简洁,我也要学着点。
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()){
return false;
}
int[] count = new int[26];
for(int i=0;i<s.length();i++){
count[s.charAt(i)-'a']++;
count[t.charAt(i)-'a']--;
}
for(int i:count){
if(i!=0){
return false;
}
}
return true;
}