题目描述:
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
为了方便,所有 26 个英文字母的摩尔斯密码表如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
给你一个字符串数组 words ,每个单词可以写成每个字母对应摩尔斯密码的组合。
例如,"cab" 可以写成 "-.-..--..." ,(即 "-.-." + ".-" + "-..." 字符串的结合)。我们将这样一个连接过程称作 单词翻译 。
要求:对 words 中所有单词进行单词翻译,返回不同 单词翻译 的数量。
思路很一般 ,还是很直接好懂,将传入的字符数组,利用循环拆开单个字符串,再进行对应匹配存到set集合里,因为Set集合里的元素具有唯一性,最后 返回size()的值即可。
示例代码如下:
class Solution {
public int uniqueMorseRepresentations(String[] words) {
String [] dictionary= {".-","-...","-.-.","-..",".","..-.","--.",
"....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",
".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
Set<String> set =new HashSet<>(words.length);
for (String s:words){// 转成单个字符串
StringBuffer sb=new StringBuffer();
for (char c:s.toCharArray()){ //单个字符串转char字符
// System.out.println(dictionary[c-'a']);
// System.out.println(c-'a');输出下标
sb.append(dictionary[c-'a']); //拼摩尔斯字符串
}
set.add(sb.toString()); //set集合元素唯一
}
//System.out.println(set.size());
return set.size();
}
}
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/unique-morse-code-words
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。