国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
'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;//遍历字符串数组wordsfor(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();}
};