500. Keyboard Row

Posted 高数考了59

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了500. Keyboard Row相关的知识,希望对你有一定的参考价值。

方法一,标志位,这里标志位的运用很灵活,可以学习一下

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     vector<string> findWords(vector<string>& words) 
12     {
13         unordered_set<char> setline1{Q,W,E,R,T,Y,U,I,O,P,q,w,e,r,t,y,u,i,o,p};
14         unordered_set<char> setline2{A,S,D,F,G,H,J,K,L,a,s,d,f,g,h,j,k,l};
15         unordered_set<char> setline3{Z,X,C,V,B,N,M,z,x,c,v,b,n,m};
16         vector<string> res;
17         for(string &s:words)
18         {
19             bool in1=true,in2=true,in3=true;
20             for(char &c:s)
21             {
22                 if(in1)
23                     if(setline1.find(c)==setline1.end())
24                         in1=false;
25                 if(in2)
26                     if(setline2.find(c)==setline2.end())
27                         in2=false;
28                 if(in3)
29                     if(setline3.find(c)==setline3.end())
30                         in3=false;
31             }
32             if(in1||in2||in3)
33                 res.push_back(s);
34         }
35         return res;
36     }
37 };

方法二:用第一个字符确定出查找的串,再在那个串中找

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     vector<string> findWords(vector<string>& words) 
12     {
13         unordered_set<char> setline1{Q,W,E,R,T,Y,U,I,O,P,q,w,e,r,t,y,u,i,o,p};
14         unordered_set<char> setline2{A,S,D,F,G,H,J,K,L,a,s,d,f,g,h,j,k,l};
15         unordered_set<char> setline3{Z,X,C,V,B,N,M,z,x,c,v,b,n,m};
16         vector<string> res;
17         for(string &s:words)
18         {
19             bool flag=true;
20             unordered_set<char> curset;
21             if(setline1.find(s[0])!=setline1.end())
22                 curset=setline1;
23             else if(setline2.find(s[0])!=setline2.end())
24                 curset=setline2;
25             else 
26                 curset=setline3;
27             for(char &c:s)
28                 if(curset.find(c)==curset.end())
29                 {
30                     flag=false;
31                     break;
32                 }
33             if(flag)
34                 res.push_back(s);
35         }
36         return res;
37     }
38 };

 

以上是关于500. Keyboard Row的主要内容,如果未能解决你的问题,请参考以下文章

500. Keyboard Row

500. Keyboard Row

500. Keyboard Row

LeetCode-500. Keyboard Row

LeetCode. 500. Keyboard Row

leetcode Keyboard Row500 Java