Keyboard Row(leetcode)

来源:互联网 发布:python re group 编辑:程序博客网 时间:2024/06/05 19:01

Keyboard Row

  • Keyboard Row
    • 题目
    • 解决


题目

leetcode题目

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.

解决

class Solution {public:    vector<string> findWords(vector<string>& words) {        vector<string> result;        char r1[] = {'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'};        char r2[] = {'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'};        char r3[] = {'z', 'x', 'c', 'v', 'b', 'n', 'm'};        // 分别用set来存储对应的字符,方便判断字符对应的位置        set<char> up(r1, r1 + 10);        set<char> mid(r2, r2 + 9);        set<char> down(r3, r3 + 7);        int u, m, d;        for (int i = 0; i < words.size(); i++) {            u = 0;            m = 0;            d = 0;            for (int j = 0; j < words[i].length(); j++) {                // 判断字符是否在第一行                if (up.count(words[i][j]) == 1) u = 1;                // 判断字符是否在第二行                if (mid.count(words[i][j]) == 1) m = 1;                // 判断字符是否在第三行                if (down.count(words[i][j]) == 1) d = 1;                // 判断字符串中的字符是否由同一行的字符组成                if (u + m + d > 1) break;            }            // 将满足条件的字符串记录下来            if (u + m + d == 1) result.push_back(words[i]);        }        return result;    }};
原创粉丝点击