1. 程式人生 > 其它 >LeetCode:804. Unique Morse Code Words唯一摩爾斯密碼詞(C語言)

LeetCode:804. Unique Morse Code Words唯一摩爾斯密碼詞(C語言)

技術標籤:LeetCode

題目描述:
國際摩爾斯密碼定義一種標準編碼方式,將每個字母對應於一個由一系列點和短線組成的字串, 比如: “a” 對應 “.-”, “b” 對應 “-…”, “c” 對應 “-.-.”, 等等。

為了方便,所有26個英文字母對應摩爾斯密碼錶如下:

[".-","-…","-.-.","-…",".","…-.","–.","…","…",".—","-.-",".-…","–","-.","—",".–.","–.-",".-.","…","-","…-","…-",".–","-…-","-.–","–…"]

給定一個單詞列表,每個單詞可以寫成每個字母對應摩爾斯密碼的組合。例如,“cab” 可以寫成 “-.-…–…”,(即 “-.-.” + “.-” + “-…” 字串的結合)。我們將這樣一個連線過程稱作單詞翻譯。

返回我們可以獲得所有詞不同單詞翻譯的數量。

例如:
輸入: words = [“gin”, “zen”, “gig”, “msg”]
輸出: 2
解釋:
各單詞翻譯如下:
“gin” -> “–…-.”
“zen” -> “–…-.”
“gig” -> “–…--.”
“msg” -> “–…--.”

共有 2 種不同翻譯, “–…-.” 和 “–…--.”.

注意:

單詞列表words 的長度不會超過 100。
每個單詞 words[i]的長度範圍為 [1, 12]。
每個單詞 words[i]只包含小寫字母。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/unique-morse-code-words
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解答:

int uniqueMorseRepresentations(char ** words, int wordsSize){
    int i = 0;
    int j = 0;
    int n = 0;
    int k =
0; int count = 0; char tmp[100][100] = {0}; char result[120][100] = {0}; int flag = 0; char res[26][10] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}; for(i = 0; i < wordsSize;i++){ j = 0; flag = 0; while(words[i][j] != '\0'){ n = words[i][j] - 'a'; strcat(tmp[i], res[n]); //每一行拼接到tmp[i]中 j++; } for(k = 0; k < count; k++) { if(0 == strcmp(result[k], tmp[i])){ //若摩爾斯密碼存在則退出 flag = 1; break; } } if (0 == flag){ strcpy(result[count], tmp[i]); //若摩爾斯密碼不存在則儲存至result count++; } } return count; }

執行結果:
在這裡插入圖片描述