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