判斷兩個字串是不是異位構詞
這個我最喜歡的例子當然就是哈利波特囉!!!
----引用分隔線引用分隔線-------
"Tom Marvolo Riddle" = "I am Lord Voldemort"
(湯姆·魔佛羅·瑞斗 = 我是佛地魔)
----引用分隔線結束分隔線引用分隔線結束分隔線-------
雖然一次commit就過了, 不過發現別人(每次都是接這句XD)有更省memory的作法啊啊啊啊啊為什麼我又沒想到呢為什麼?! (搥心肝)
用兩個hash (?) 來存, 其實也可以只用一個, 讓它們加加減減,
意思是一樣的. 結束 XD
Valid Anagram
bool isAnagram(char* s, char* t) {
int src[26]={0};
int dst[26]={0};
int i;
int src_len = strlen(s);
int dst_len = strlen(t);
for (i=0;i<src_len;i++)
src[s[i]-'a']++;
for (i=0;i<dst_len;i++)
dst[t[i]-'a']++;
for (i=0;i<26;i++)
if (src[i]!= dst[i])
return false;
return true;
}
「20231123更新」
又寫了一次,沒太大的不一樣,就降 XD
bool isAnagram(char* s, char* t) {
int lenS = strlen(s);
int lenT= strlen(t);
if (lenS != lenT)
return false;
int *countS = calloc (26, sizeof(int));
int *countT = calloc (26, sizeof(int));
for (int i=0;i<lenS;i++)
{
countS[s[i]-'a']++;
countT[t[i]-'a']++;
}
for (int i=0;i<26; i++)
if (countS[i]!=countT[i])
return false;
return true;
}
沒有留言:
張貼留言