欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【leetcode】500. Keyboard Row

发布时间:2025/6/17 编程问答 67 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【leetcode】500. Keyboard Row 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

问题描述:

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.
  • 解法一:

    常规解法,用unordered_set存储每一行的字母,依次寻找判断。

    1 class Solution { 2 public: 3 vector<string> findWords(vector<string>& words) { 4 unordered_set<char> row1 {'q', 'w', 'e', 'r', 't', 'y','u', 'i', 'o', 'p'}; 5 unordered_set<char> row2 {'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'}; 6 unordered_set<char> row3 { 'z', 'x', 'c', 'v', 'b' ,'n', 'm'}; 7 vector<unordered_set<char>> rows {row1, row2, row3}; 8 9 10 vector<string> validWords; 11 for(int i=0; i<words.size(); ++i){ 12 int row=0; 13 14 for(int k=0; k<3; ++k){ 15 if(rows[k].count((char)tolower(words[i][0])) > 0) row = k; 16 } 17 18 validWords.push_back(words[i]); 19 for(int j=1; j<words[i].size(); ++j){ 20 if(rows[row].count((char)tolower(words[i][j])) == 0){ 21 validWords.pop_back(); 22 break; 23 } 24 } 25 26 } 27 return validWords; 28 } 29 };

    解法二:

    这种解法比较有启发性,看起来很有意思。

    1 class Solution { 2 public: 4 vector<string> findWords(vector<string>& words) 5 { 6 vector<string> res; 7 8 for(auto str : words) 9 { 10 bool r1 = str.find_first_of("QWERTYUIOPqwertyuiop") == string::npos ? false : true; 11 bool r2 = str.find_first_of("ASDFGHJKLasdfghjkl") == string::npos ? false : true; 12 bool r3 = str.find_first_of("ZXCVBNMzxcvbnm") == string::npos ? false : true; 13 14 if(r1 + r2 + r3 == 1) 15 res.push_back(str); 16 } 17 18 return res; 19 } 20 21 };

     

    转载于:https://www.cnblogs.com/SarahLiu/p/6702364.html

    总结

    以上是生活随笔为你收集整理的【leetcode】500. Keyboard Row的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。