500. Keyboard Row

来源:互联网 发布:python如何运行代码 编辑:程序博客网 时间:2024/05/16 11:46

问题描述:Given a List of words, return the words that can be typed using letters of alphabet on only one row's of American keyboard like the image below.


Example 1:

Input: ["Hello", "Alaska", "Dad", "Peace"]Output: ["Alaska", "Dad"]

Note:

  1. You may use one character in the keyboard more than once.
  2. You may assume the input string will only contain letters of alphabet.
分析:给出n个字符串,从而判断每个字符串中的字符石头来自美式键盘上的同一行,若来自同一行,返回该string。过程将键盘上的每行字符存储到相应的vector或者数组中,然后循环Input中的每个string,并且循环string中的每个char,从而进行比较。

class Solution {public:    vector<string> findWords(vector<string>& words) {        std::unordered_set <char> row1={'q','w','e','r','t','y','u','i','o','p'};        std::unordered_set <char> row2={'a','s','d','f','g','h','j','k','l'};        std::unordered_set <char> row3={'z','x','c','v','b','n','m'};        vector<string> out;        for(auto &elem : words)        {            bool d1=true,d2=true,d3=true;            for(auto &key :elem)            {                if(d1)                {                    auto re=row1.find(tolower(key));                    if(re==row1.end())                        d1=false;                }                if(d2)                {                    auto re=row2.find(tolower(key));                    if(re==row2.end())                        d2=false;                }                if(d3)                {                    auto re=row3.find(tolower(key));                    if(re==row3.end())                        d3=false;                }                            }            if(d1||d2||d3)                out.push_back(elem);        }                return out;    }};


0 0
原创粉丝点击