这个题目解法比较简单,单词转成摩斯码后拿set去重即可。
唯一注意的是set选用HashSet比TreeSet时间要快一点,TreeSet是有序集合,所以会比无序集合慢一点。
class Solution {
private String[] morseArray = new String[]{".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
public int uniqueMorseRepresentations(String[] words) {
Set<String> set = new HashSet<>();
for (String word : words) {
set.add(translate(word));
}
return set.size();
}
/**
* 将单词翻译成摩斯密码
*/
private String translate(String word) {
StringBuilder code = new StringBuilder();
for (char c : word.toCharArray()) {
code.append(morseArray[(byte)c - (byte)'a']);
}
return code.toString();
}
}