//字母异位词:字符串长度相同,字符相同,顺序不同
//同时需要考虑是否有重复字符
//本题是一个典型的数组作为哈希表去完成的题目
class Solution {
public:
bool isAnagram(string s, string t) {
//首先创建一个数组
if(s.length()!=t.length()){
return false;
}
int record[26]={0}; //题目中说明字符串中都是小写字母,那26大小的数组用来记录每个字符的出现次数是足够的
//对s字符串中出现的字符进行加一计数操作
for(int i=0;i<s.size();i++){
record[s[i]-'a']++;
}
/*调试代码
for(int i=0;i<26;i++){
printf("%d",record[i]);
}
*/
printf("\n");
//对t字符串中出现的字符进行减一计数操作
for(int i=0;i<t.size();i++){
record[t[i]-'a']--;
}
/*调试代码
for(int i=0;i<26;i++){
printf("%d",record[i]);
}
*/
for(int i=0;i<26;i++){
if(record[i]!=0){
return false;
}
}
return true;
}
};
二刷的时候自己写没有写出来,所以用了调试代码段,来观察数据变化
从测试结果中可以很明显的看到,数组前后的变化,笨人有笨办法吧算是