题目描述
-
变形词:两个串有相同的字符及数量组成 abc abc ,abc cba,aabcd bcada;
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 -
示例 1:输入: s = “anagram”, t = “nagaram”
输出: true
示例 2: -
输入: s = “rat”, t = “car”
输出: false -
说明:你可以假设字符串只包含小写字母
代码
public static void main(String[] args) {
String s1="zxcvbn";
String s2="xczvnb";
System.out.println(isAnagram1(s1,s2));
System.out.println(isAnagram2(s1,s2));
}
private static boolean isAnagram1(String s1, String s2) {
char[] chars1 = s1.toCharArray();
char[] chars2 = s2.toCharArray();
Arrays.sort(chars1);
Arrays.sort(chars2);
//System.out.println(Arrays.toString(chars1));
//System.out.println(Arrays.toString(chars2));
return Arrays.equals(chars1, chars2);
}
private static boolean isAnagram2(String s1, String s2) {
int[] helper=new int[256];
for (int i = 0; i <s1.length() ; i++) {
helper[s1.charAt(i)]++;
}
for (int i = 0; i <s2.length() ; i++) {
if(helper[s2.charAt(i)]==0){
return false;
}else {
helper[s2.charAt(i)]--;
}
}
return true;
}