题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
难度:简单
输入: s = "abba", t = "abab"
输出: true
输入: s = "", t = ""
输出: true
void haha(char *str, int *code) {
int len = strlen(str);
while (len > 0) {
code[str[len - 1]] += 1;
len -= 1;
}
return ;
}
bool isAnagram(char* s, char* t) {
if (strlen(s) != strlen(t)) return false ;
int code1[260] = {0}, code2[260] = {0};
haha(s, code1);
haha(t, code2);
for (int i = 0; s[i]; i++) {
if (code1[s[i]] == code2[s[i]]) continue;
return false;
}
return true;
}
因为他们的长度肯定是一样的,那么:
假设code1(s的信息)里面的和code2(t的信息)是一样的,那么这个时候拿出任意一个串,比如s串,让:
code1[s[i]] == code2[s[i]]
查看在code2中的字符信息和s每位的字符信息是不是一样的,如果是,并且长度一样,那么必然是符合题目要求的。