1. 题目原址
https://leetcode.com/problems/unique-morse-code-words/
2. 题目描述
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();
}
}