LeetCode--500. 键盘行(C++描述)

// Source : https://leetcode-cn.com/problems/keyboard-row/
// Date : 2021-10-12

题目描述:
在这里插入图片描述

题目分析:由于题目的提示说到word[i]的字符会包含大写和小写,因此我们在初始化键盘的字符的时候需要将大小写全部初始化,然后比较的时候,只要word的字符有大写或者小写的话,就将该计数器自增,然后比较完该字符的时候需要比较计数器和该字符的长度,如果相等的话,就将该字符加入结果数组。

代码:

class Solution {
    
    
public:
    vector<string> findWords(vector<string>& words) 
    {
    
    
        vector<string> v;
        //将待查字符串的大小写都初始化
	    string str1 = "qwertyuiop", str2 = "asdfghjkl", str3 = "zxcvbnm",
        str4="QWERTYUIOP", str5="ASDFGHJKL", str6="ZXCVBNM";
        //比较每一个单词
        for (int i = 0; i < words.size(); i++)
        {
    
    
            //count1、count2、count3分别用于计数第一、二、三行键盘元素的个数
            int count1 = 0, count2 = 0, count3 = 0;
            //比较该单词的每一个字符
            for (int j = 0; j < words[i].size(); j++)
            {
    
    
                //如果存在字符,就把字符串自增
                if (str1.find(words[i][j]) != -1||str4.find(words[i][j])!=-1)
                    count1++;              
                if (str2.find(words[i][j] )!=-1|| str5.find(words[i][j]) != -1) 
                    count2++;                
                if (str3.find(words[i][j]) != -1 || str6.find(words[i][j]) != -1)
                    count3++;                
            }
            //如果存在相同字母的次数与word[i]的长度相同,则表示可由一行打出
            if (count1 == words[i].size() || count2 == words[i].size() || count3 == words[i].size())
                v.push_back(words[i]);
        }
        return v;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_44614524/article/details/120716710