500. 键盘行
思路:存储每一位字母键盘的行数
取每一个单词的第一个字母,遍历每一个单词,判断单词所有字母所在行号是否和第一个字母相同,同时要将所有的字母转换成小写字母来处理
时间复杂度:O(L)O(L)O(L)所有单词长度之和
空间复杂度:O(C)O(C)O(C)字母个数26
class Solution {
public:
vector<string> findWords(vector<string>& words) {
string r = "12210111011122000010020202";
vector<string> res;
for (auto& str : words) {
int index = r[tolower(str[0]) - 'a'];
bool success = true;
for (auto& c : str) {
if (r[tolower(c) - 'a'] != index) {
success = false;
break;
}
}
if (success) res.push_back(str);
}
return res;
}
};
这篇博客介绍了如何用C++编写一个算法,用于判断输入的一组单词中,每个单词的所有字母是否都在键盘同一行。算法基于英文键盘布局,通过预存每个字母的行号并遍历单词来实现。时间复杂度为O(L),其中L是所有单词的长度之和,空间复杂度为O(C),C代表字母个数26。
691

被折叠的 条评论
为什么被折叠?



