242. 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入:s = "anagram", t = "nagaram"
输出: true
首先需要理解什么是 “字母异位词 ”【即:两字符串长度相同,字母相同,顺序不同】
利用数组 result [] 存放字符串的字母(因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下标0,相应的字符z映射为下标25。)即可定义一个 长度为 26的数组(数组下标也是从0开始);
先遍历 s 字符串,因为数组result[] 26个位置刚好对应 26个字母, 所以遍历s的时候,“a”则在result[ 0 ] 位置 +1;
接着遍历 t 字符串, 在result[] 每个字母对应的位置 再-1;
当最后 result 数组的 所有元素都为0 即可证明两个字符串是字母异位词;
class Solution {
public boolean isAnagram(String s, String t) {
//利用数组 result [] 存放字符串的字母
int[] result=new int[26];
//先遍历 s 字符串,因为数组result[] 26个位置刚好对应 26个字母, 所以遍历s的时候,“a”则在result[ 0 ] 位置 +1;
for(int i=0; i<s.length();i++){
result[s.charAt(i)-'a']++;
}
//接着遍历 t 字符串, 在result[] 每个字母对应的位置 再-1
for(int i=0; i<t.length();i++){
result[t.charAt(i)-'a']--;
}
//当最后 result 数组的 所有元素都为0 即可证明两个字符串是字母异位词
for(int res: result){
if(res != 0){
return false;
}
}
return true;
}
}