有效的字母异位词(力扣 242)
-
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
-
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
- 输入: s = “anagram”, t = “nagaram”
- 输出: true
示例 2:
- 输入: s = “rat”, t = “car”
- 输出: false
提示:
- 1 <= s.length, t.length <= 5 * 104
- s 和 t 仅包含小写字母
- 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
代码:
/*获取hash值*/
#define HASH(X) ((X) - 'a')
bool isAnagram(char * s, char * t){
int hashArr[26] = {0}; /*创建一个存储26个字符的hash表*/
/*遍历s将每个元素的hash++*/
int i = 0;
for(;s[i] != '\0';i++){
hashArr[HASH(s[i])] ++;
}
/*遍历t将每个元素的hash--*/
for(i = 0;t[i] != '\0';i++){
hashArr[HASH(t[i])] --;
}
/*遍历剩下的hashArr,所有元素全为0,则二者为字母异位词*/
for(i = 0;i < 26;i++){
if(hashArr[i] != 0){
return false;
}
}
return true;
}