java实现对英文字母去重_LeetCode算法题-Unique Morse Code Words(Java实现)
這是悅樂書的第318次更新,第339篇原創(chuàng)
01 看題和準(zhǔn)備
今天介紹的是LeetCode算法題中Easy級別的第186題(順位題號是804)。國際莫爾斯電碼定義了一種標(biāo)準(zhǔn)編碼,其中每個字母映射到一系列點和短劃線,如下所示:“a”映射到“.-”,“b”映射到“-...”,“c”映射到“-.-.“, 等等。
為方便起見,下面給出了英文字母26個字母的完整表格:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
現(xiàn)在,給定一個單詞數(shù)組,每個單詞可以寫成每個字母的摩爾斯代碼的串聯(lián)。例如,“cba”可以寫成“-.-..--...”,(這是串聯(lián)"-.-." + "-..." + ".-")。我們稱之為串聯(lián),即一個詞的轉(zhuǎn)換。返回我們所有單詞中不同變換的數(shù)量。例如:
輸入: words = ["gin", "zen", "gig", "msg"]
輸出: 2
說明: 每個單詞的轉(zhuǎn)換是:
"gin" -> "--...-."
"zen" -> "--...-."
"gig" -> "--...--."
"msg" -> "--...--."
有兩種不同的轉(zhuǎn)換, "--...-." and "--...--."。
注意:
數(shù)組的長度最多為100。
每個單詞的長度范圍為[1,12]。
單詞只包含小寫字母。
本次解題使用的開發(fā)工具是eclipse,jdk使用的版本是1.8,環(huán)境是win7 64位系統(tǒng),使用Java語言編寫和測試。
02 解題
題目的意思很簡單,根據(jù)給定的單詞數(shù)組,將數(shù)組中的每個單詞轉(zhuǎn)換成由莫爾斯電碼組成的字符串,計算其中有幾個字符串(重復(fù)出現(xiàn)的不計數(shù))。
第一步,初始化莫爾斯電碼字符串?dāng)?shù)組,創(chuàng)建一個HashSet,用來存儲轉(zhuǎn)換后的新字符串。
第二步,遍歷單詞數(shù)組,將每個單詞中的組成字符轉(zhuǎn)成莫爾斯電碼并且拼接成一個新的字符串,存入HashSet中。
第三步,以HashSet的size作為結(jié)果返回,因為其元素不會重復(fù),其大小就是去重后剩下的字符串?dāng)?shù)量。
public int uniqueMorseRepresentations(String[] words) {
String[] arr = {".-","-...","-.-.","-..",".","..-.",
"--.","....","..",".---","-.-",".-..","--",
"-.","---",".--.","--.-",".-.","...","-",
"..-","...-",".--","-..-","-.--","--.."};
HashSet set = new HashSet();
for (int i=0; i
String str = "";
for (char ch : words[i].toCharArray()) {
str += arr[ch-'a'];
}
set.add(str);
}
return set.size();
}
03 小結(jié)
算法專題目前已日更超過五個月,算法題文章187+篇,公眾號對話框回復(fù)【數(shù)據(jù)結(jié)構(gòu)與算法】、【算法】、【數(shù)據(jù)結(jié)構(gòu)】中的任一關(guān)鍵詞,獲取系列文章合集。
以上就是全部內(nèi)容,如果大家有什么好的解法思路、建議或者其他問題,可以下方留言交流,點贊、留言、轉(zhuǎn)發(fā)就是對我最大的回報和支持!
內(nèi)容來源于網(wǎng)絡(luò)如有侵權(quán)請私信刪除
總結(jié)
以上是生活随笔為你收集整理的java实现对英文字母去重_LeetCode算法题-Unique Morse Code Words(Java实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java农耕者_蒯通——大才也,《史记》
- 下一篇: java同名不同包文件_java – 如