思路
将同一行的英文字符映射为Map中的同一值,只要比较每个String中的每个字符的Map映射值是否一致即可。代码
#include <iostream>
#include <map>
#include <vector>
using namespace std;
class Solution {
public:
vector<string> findWords(vector<string>& words) {
vector<string> output;
vector<char> line1 = {'Q','W','E','R','T','Y','U','I','O','P',
'q','w','e','r','t','y','u','i','o','p'
};
vector<char> line2 = {'A','S','D','F','G','H','J','K','L',
'a','s','d','f','g','h','j','k','l'
};
vector<char> line3 = {'Z','X','C','V','B','N','M',
'z','x','c','v','b','n','m'
};
map<char,int> charMap;
for(int i = 0 ; i < line1.size() ; i++)
charMap[line1[i]] = 1;
for(int i = 0 ; i < line2.size() ; i++)
charMap[line2[i]] = 2;
for(int i = 0 ; i < line3.size() ; i++)
charMap[line3[i]] = 3;
for(int i = 0 ; i < words.size() ; i++) {
int flag = charMap[words[i][0]];
int j = 1;
for( ; j < words[i].size() ; j++)
if(charMap[words[i][j]] != flag)
break;
if(j == words[i].size())
output.push_back(words[i]);
}
return output;
}
};
int main(int argc, const char * argv[]) {
vector<vector<char>> board ;
vector<string> input= {"Hello", "Alaska", "Dad", "Peace"};
Solution s ;
vector<string> output = s.findWords(input);
for(int i = 0 ; i < output.size() ; i++)
cout<<output[i]<<endl;
return 0;
}