题目:
打卡解析:最大的字母长度是26个字母的长度不会超过256,定义数组counter,循环字符s因为s的长度和t的长度一定相等才走循环,长度不想等肯定不是字母异位词,挨个循环每个字母,让s的这个字母数字++让t的这个字母的数字--。如果两个单词是异位词就是,单词顺序不一致但是个数一样,每个单词出现的次数也是一样,一遍循环完++和--全部抵消了数组counter必定为0的时候返回true。有不等于0的返回fase
public static boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
int[] counter = new int[256];
for (int i = 0; i < s.length(); i++) {
counter[s.charAt(i)]++;
counter[t.charAt(i)]--;
}
for (int count : counter) {
if (count != 0) {
return false;
}
}
return true;
}
总结
全是字母的首先想到用一个256的数组做。当然长度是26的也可以每个字符.charAt(i)-'A'就好。
备注
本文正在参与「掘金 2021 春招闯关活动」, 点击查看。