解题报告Leecode 500. 键盘行——Leecode每日一题系列
Posted 来老铁干了这碗代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解题报告Leecode 500. 键盘行——Leecode每日一题系列相关的知识,希望对你有一定的参考价值。
今天是坚持每日一题打卡第七天
题目描述
给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 “qwertyuiop” 组成。
第二行由字符 “asdfghjkl” 组成。
第三行由字符 “zxcvbnm” 组成。
示例 1:
输入:words = [“Hello”,“Alaska”,“Dad”,“Peace”]
输出:[“Alaska”,“Dad”]
示例 2:
输入:words = [“omk”]
输出:[]
示例 3:
输入:words = [“adsdf”,“sfd”]
输出:[“adsdf”,“sfd”]
提示:
1 <= words.length <= 20
1 <= words[i].length <= 100
words[i] 由英文字母(小写和大写字母)组成
核心思路:哈希表打表映射,一一匹配即可。
耗时:0ms
class Solution {
public:
vector<string> findWords(vector<string>& words) {
vector<string>res;
unordered_map<char, int>um[3];
um[0]['q'] = um[0]['w'] = um[0]['e'] = um[0]['r'] = um[0]['t'] = um[0]['y'] = um[0]['u'] = um[0]['i'] = um[0]['o'] = um[0]['p'] = 1;
um[1]['a'] = um[1]['s'] = um[1]['d'] = um[1]['f'] = um[1]['g'] = um[1]['h'] = um[1]['j'] = um[1]['k'] = um[1]['l'] = 1;
um[2]['z'] = um[2]['x'] = um[2]['c'] = um[2]['v'] = um[2]['b'] = um[2]['n'] = um[2]['m'] = 1;
for(auto s : words) {
int t = 0;
if(um[0][tolower(s[0])] == 1) t = 0;
else if(um[1][tolower(s[0])] == 1) t = 1;
else if(um[2][tolower(s[0])] == 1) t = 2;
for(auto i : s) {
if(um[t][tolower(i)] == 0) goto loop;
}
res.push_back(s);
loop:;
}
return res;
}
};
零星的变好,最后也会如星河般闪耀
以上是关于解题报告Leecode 500. 键盘行——Leecode每日一题系列的主要内容,如果未能解决你的问题,请参考以下文章
解题报告Leecode 35. 搜索插入位置——Leecode刷题系列
解题报告Leecode. 575. 分糖果——Leecode每日一题系列
解题报告Leecode911. 在线选举——Leecode每日一题系列
解题报告Leecode911. 在线选举——Leecode每日一题系列