leetcode-500-键盘行

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。


American keyboard


示例1:

输入: ["Hello", "Alaska", "Dad", "Peace"]
输出: ["Alaska", "Dad"]

注意:

  1. 你可以重复使用键盘上同一字符。
  2. 你可以假设输入的字符串将只包含字母。
class Solution {        
public:
    int getrow(char c) {
	vector<char> row0 = { 'q','w','e','r','t','y','u','i','o','p' };
	vector<char> row1 = { 'a','s','d','f','g','h','j','k','l' };
	vector<char> row2 = { 'z','x','c','v','b','n','m' };
    //查找时,一律转化为小写
    c=tolower(c);
	int i = 0;
	for (;i < row0.size();++i)
		if (c == row0[i])
			return 0;//即在row0中成功找到
		int j = 0;//否则从row1中查找
		for (;j < row1.size();++j)
			if (row1[j] == c)
				return 1;
	return 2;//row1中也没有找到时,必然在row2中
}
public:
    vector<string> findWords(vector<string>& words) {//注意大小写问题,最后的res的大小写必须与输入的保持一致
        vector<string> res;
      for(int i=0;i<words.size();++i)//对于words中的每一个string
      {
          int location=getrow(words[i][0]);
          int j=0;
          for(;(j<words[i].length())&&(getrow(words[i][j])==location);++j);//空语句
          if(j==words[i].length())
              res.push_back(words[i]);
      }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/u014450222/article/details/80719553