天天看點

【String-easy】804. Unique Morse Code Words 摩斯代碼

1. 題目原址

https://leetcode.com/problems/unique-morse-code-words/

2. 題目描述

【String-easy】804. Unique Morse Code Words 摩斯代碼

3. 題目大意

給定摩斯電碼的密碼,這個密碼對應的是26個小寫字母,給定一個字元串數組,問這個數組按照摩斯代碼轉換,能有多少個不同的摩斯代碼轉換結果。

4. 解題思路

  • 将摩斯代碼放到一個26位的字元串數組中,再定義一個HashSet類型的變量,用來存儲傳回的個數。
  • 使用增強for循環來周遊字元串數組,每一次循環中都定義一個新的StringBuilder 變量。這個變量用來存儲每個字元串轉換為的摩斯代碼。将這個變量放到剛剛定義的hashSet類型的變量中。最後傳回這個變量的長度。

5. AC代碼

class Solution {
    public int uniqueMorseRepresentations(String[] words) {
        	String [] morseAlphabets = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",
							   ".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",
							   ".--","-..-","-.--","--.."};
	
	Set<String> morseCodes = new HashSet<>();
	for(String word : words)
	{
		StringBuilder sb = new StringBuilder();
		for(char c : word.toCharArray())
		{
			sb.append(morseAlphabets[((int)(c)) - 97]);
		}
		morseCodes.add(sb.toString());
	}

	return morseCodes.size();
    }
}