500. Keyboard Row

来源:互联网 发布:唯弋女装旗舰店淘宝 编辑:程序博客网 时间:2024/06/06 03:18

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:
You may use one character in the keyboard more than once.
You may assume the input string will only contain letters of alphabet.

class Solution {public:    bool isSame(int pos0, int pos1){        if(pos0 <= 9 && pos1 <= 9) return true;        else if(9 < pos0 && pos0 <= 18 && 9 < pos1 && pos1 <= 18) return true;        else if(18 < pos0 && pos0 <= 25 && 18 < pos1 && pos1 <= 25) return true;        else return false;    }    vector<string> findWords(vector<string>& words) {        string mode = "qwertyuiopasdfghjklzxcvbnm";        int first = 9, second = 18, third = 25;        vector<string> v;        for(int i = 0; i < words.size(); ++i){            string str = words[i];            int j = 1, len = str.length();            for(; j < len; ++j){                int pos0 = mode.find(tolower(str[j - 1]), 0);                int pos1 = mode.find(tolower(str[j]), 0);                if(!isSame(pos0, pos1))                    break;            }            if(j == len)                v.push_back(str);        }        return v;    }};
0 0
原创粉丝点击