给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
s = “anagram”, t = “nagaram”
true
提示:
public class Main{
public static void main(String[] args) {
String s = "anagram";
String t = "nagaram";
System.out.println(isAnagram(s, t));//true
}
/**
* 直接计数26个字母出现的次数,进行对比
* @param s 字符串1
* @param t 字符串2
* @return 返回真假
*/
public static boolean isAnagram(String s, String t) {
int[] arr1 = new int[26];//计数s:26个字母出现的次数
int[] arr2 = new int[26];//计数t:26个字母出现的次数
for (int i = 0; i < s.length(); i++) {
arr1[s.charAt(i) - 'a']++;//由于题目给出的案例都是小写字母,则需要减去‘a’,使得最终下标落在[0,26)
}
for (int i = 0; i < t.length(); i++) {
arr2[t.charAt(i) - 'a']++;
}
//判断两个数组中字符出现的次数是否一致
for (int i = 0; i < 26; i++) {
if (arr1[i] != arr2[i]) {
return false;//出现一次不一致的情况,则直接返回假
}
}
return true;
}
}