LeetCode 804. Unique Morse Code Words
考点 | 难度 |
---|---|
Hash Table | Easy |
题目
International Morse Code defines a standard encoding where each letter is mapped to a series of dots and dashes, as follows:
‘a’ maps to “.-”,
‘b’ maps to “-…”,
‘c’ maps to “-.-.”, and so on.
For convenience, the full table for the 26 letters of the English alphabet is given below:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
Given an array of strings words where each word can be written as a concatenation of the Morse code of each letter.
For example, “cab” can be written as “-.-…–…”, which is the concatenation of “-.-.”, “.-”, and “-…”. We will call such a concatenation the transformation of a word.
Return the number of different transformations among all words we have.
思路
把每一个word改成摩斯码的格式,再存入之前建好的Hash Set,最后返回Hash Set的长度。
答案
public int uniqueMorseRepresentations(String[] words) {
String[] tokens = new String[]{".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
Set<String> set = new HashSet<>();
for (String w: words) {
String sb = "";
for (int i = 0; i < w.length(); i++) {
sb += tokens[w.charAt(i)-'a'];
}
set.add(sb);
}
return set.size();
}