題目描述:給定兩個字符串 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每位的字符信息是不是一樣的,如果是,并且長度一樣,那么必然是符合題目要求的。