算法day14 有效字母的异位词
题目描述

思路
我们要判断两个字符串是否为异位词,即是要判断这两个字符串中是否出现了相同的字母且对应了相同的出现次数。这里我们可以采用哈希的想法,即以字符串的字母为“值”来映射位序“键”。由于题目中已经说明字符串只会出现小写字母,所以总共可能出现的字母数为26。我们定义一个长度为26的整型数组hash,将其初始化为0。随后我们可以通过一个循环将第一个字符串的对应字母出现的次数映射到hash数组中,再利用第二个字符串进行减值。经过两轮循环后,我们判断hash中的元素是否全为0,如果是,则说明这两个字符串是异位词,反之则不是。
代码如下
bool isAnagram(string s, string t) {
int hash[26]={0};
for(int i=0;i<s.length();i++){
hash[s[i]-'a']++;
}
for(int j=0;j<t.length();j++){
hash[t[j]-'a']--;
}
for(int k = 0;k<26;k++){
if(hash[k]){
return false;
}
}
return true;
}
时间复杂度:O(s.length()+t.length()))
空间复杂度:O(1)
END
浙公网安备 33010602011771号