栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode-500

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode-500

键盘行

题目
给一个字符串数组 words ,只返回可以使用在美式键盘同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 “qwertyuiop” 组成。
第二行由字符 “asdfghjkl” 组成。
第三行由字符 “zxcvbnm” 组成。

示例
输入:words = [“Hello”,“Alaska”,“Dad”,“Peace”]
输出:[“Alaska”,“Dad”]

题解

将判断给定的字符串是否由键盘某一行字符组成转换为判断字符串中所有字符是否对应键盘同一行,因此可以为每个英文字母标记其对应的键盘行号,然后遍历字符串,判断其所有字符行号是否一致。
注意:需要将大小写字母统一,便于计算。

更多题解

代码
  1. tolower():将大写字母转换为小写字母
    toupper():将小写字母转换为大写字母
  2. emplace_back():只调用转移构造函数,在插入时直接构造,减少额外空间的开辟,效率更高。
    push_back():调用构造和拷贝函数,首先会调用构造函数构造临时对象,然后调用拷贝构造函数将其放入容器中,临时变量释放,造成临时变量申请资源的浪费。
class Solution {
public:
    vector findWords(vector& words) {
        //为每个英文字母分配行号
        string rowIdx="12210111011122000010020202";
        vector ans;
        for(auto& word:words){
        	//记录字符串首字符的行号
            char idx=rowIdx[tolower(word[0])-'a'];
            int n=word.size();
            bool isValid=true;
            //比较行号
            for(int i=1;i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/664014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号