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:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
Now, given a list of words, 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 "-.-." + "-..." + ".-"). We'll call such a concatenation, the transformation of a word.
Return the number of different transformations among all words we have.
Example: Input: words = ["gin", "zen", "gig", "msg"] Output: 2 Explanation: The transformation of each word is: "gin" -> "--...-." "zen" -> "--...-." "gig" -> "--...--." "msg" -> "--...--." There are 2 different transformations, "--...-." and "--...--.".
Note:
- The length of
words will be at most100 . - Each
words[i] will have length in range[1, 12] . words[i] will only consist of lowercase letters.
想法如下
- 做 mapping 轉換,然後把答案存到 HashSet,這樣就可以找出不重複的字串了
code 如下
Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
public int uniqueMorseRepresentations(String[] words) { | |
String[] morse = new String[]{".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}; | |
HashSet<String> ans = new HashSet<>(); | |
for(String s: words) { | |
StringBuilder sb = new StringBuilder(); | |
for(char c : s.toCharArray()) { | |
sb.append(morse[c-'a']); | |
} | |
ans.add(sb.toString()); | |
} | |
return ans.size(); | |
} | |
} |
沒有留言:
張貼留言