2018年2月23日 星期五

[242] Valid Anagram

寫多了就上手~~~(嗎XD)
判斷兩個字串是不是異位構詞
這個我最喜歡的例子當然就是哈利波特囉!!!

----引用分隔線引用分隔線-------
"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;
}

沒有留言:

張貼留言