其他分享
首页 > 其他分享> > leetCode 260打卡记录2021.10.30

leetCode 260打卡记录2021.10.30

作者:互联网

500 键盘行(简单题)

1.题目:给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。

美式键盘 中:

第一行由字符 "qwertyuiop" 组成。
第二行由字符 "asdfghjkl" 组成。
第三行由字符 "zxcvbnm" 组成。

在这里插入图片描述

2.解题思路

  1. 将所有数字分为三组,分组标准为 该字母所在行数 ,比如说‘a’在第二行,‘z’在第三行。然后将所有字母按a-z的顺序,将他们的行数整合成一个字符串。也就是(0代表第一行,依次类推):
“12210111011122000010020202”
  1. 遍历题目给出的每一个字符串。
  2. 在遍历过程中,先提取出每个字符串的第一个字符,得出该字符的行数(重点)。
  3. 得出行数后,开始遍历该字符串的每一个字符,得出该字符的行数,再和该字符串的第一个字符的行数比对,如果相同,则继续遍历,直到结束,也就意味着该字符串属于同一行;如果不同,则break。开始遍历下一个处理下一个字符串。
str[tolower(word[0])-'a'];

3.代码

class Solution {
public:
    vector<string> findWords(vector<string>& words) {
        vector<string> return_str;
        string str="12210111011122000010020202";
        for(string &word : words){
            bool flag=true;
            //判定第一个字符为哪一行的
            char temp=str[tolower(word[0])-'a'];
            for(int i=1;i<word.size();i++){
                if(str[tolower(word[i])-'a']!=temp){
                    flag=false;
                    break;
                }
            }
            if(flag){
                return_str.emplace_back(word);
            }
        }
        return return_str;
    }
};

标签:字符,word,2021.10,30,str,字符串,打卡,行数,tolower
来源: https://blog.csdn.net/Darcysunm/article/details/121068386