242.给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
- 该题利用一个大小为26的整型数组作为哈希表,然后遍历两个字符串,遍历第一个字符串时用这个数组记录字母的出现情况, 出现一次就在对应位置+1;遍历第二个字符串时,出现某个字母就在对应位置-1,这样如果两次遍历结束之后,哈希表中元素都为0的话就说明这两个字符串是异位词。这个解法的时间复杂度还是有点高了,可能利用其他数据结构来解决会好一点。
bool isAnagram(char * s, char * t){
int h_table[26] = {0};
for (int i = 0; i < strlen(s); i++) {
h_table[s[i] - 'a']++;
}
for (int i = 0; i < strlen(t); i++) {
h_table[t[i] - 'a']--;
}
for (int i = 0; i < 26; i++) {
if (h_table[i] != 0)
return false;
}
return true;
}