804 唯一摩斯密码词
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
'a'
对应".-"
,'b'
对应"-..."
,'c'
对应"-.-."
,以此类推。
为了方便,所有 26
个英文字母的摩尔斯密码表如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
给你一个字符串数组 words
,每个单词可以写成每个字母对应摩尔斯密码的组合。
#include <bits/stdc++.h>
using namespace std;
//将字母对应的摩斯密码存储在字符串中
string morse[]={
".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
"....", "..", ".---", "-.-", ".-..", "--", "-.",
"---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--.."
};
class Solution {
public:
int uniqueMorseRepresentations(vector<string>& words) {
//定义string型 去重的set来保存翻译后的摩斯密码
unordered_set<string> seen;
//遍历字符串数组words
for(auto i=0;i<words.size();i++){
//翻译后的字符
string code;
//遍历字符串数组的每个字符的每个字母
for(auto j=0;j<words[i].length();j++){
//将每个字母对应的摩斯密码加入code中
code.append(morse[words[i][j]-'a']);
}
//将code中保存的当前字符对应摩斯密码加入到seen字符串中
seen.insert(code);
}
//返回字符串大小(unordered_set自动去重)
return seen.size();
}
};