前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【leetcode刷题】T97-长按键入

【leetcode刷题】T97-长按键入

作者头像
木又AI帮
修改2019-07-18 10:28:30
3880
修改2019-07-18 10:28:30
举报
文章被收录于专栏:木又AI帮

【题目】

你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。

你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。

代码语言:javascript
复制
示例 :

输入:name = "alex", typed = "aaleex"
输出:true
解释:'alex' 中的 'a' 和 'e' 被长按。
示例 :

输入:name = "saeed", typed = "ssaaedd"
输出:false
解释:'e' 一定需要被键入两次,但在 typed 的输出中不是这样。
示例 :

输入:name = "leelee", typed = "lleeelee"
输出:true
示例 :

输入:name = "laiden", typed = "laiden"
输出:true
解释:长按名字中的字符并不是必要的。

提示:

name.length <= 1000 typed.length <= 1000 name 和 typed 的字符都是小写字母。

【思路】

使用两个指针i和j分别遍历name和typed数组,当name[i]和typed[j]相同或者typed[j]和typed[j-1]相同,则继续下一轮判断,否则返回False。

【代码】

python版本

代码语言:javascript
复制
class Solution(object):
    def isLongPressedName(self, name, typed):
        """
        :type name: str
        :type typed: str
        :rtype: bool
        """
        if len(name) > len(typed):
            return False
        if len(name) == :
            if len(typed) == :
                return True
            return False
        # name[i]和typed[j]字符相同,或者typed[i]和typed[i-1]字符相同
        i = 
        j = 
        while i < len(name) and j < len(typed):
            if name[i] == typed[j]:
                i += 
                j += 
            elif typed[j] == typed[j-1]:
                j += 
            else:
                return False
        # 循环结束,分为i<len(name)和j<len(typed)两种情况
        if i < len(name):
            return False
        while j < len(typed):
            if typed[j] == typed[j-1]:
                j += 
            else:
                return False
        return True

C++版本

代码语言:javascript
复制
class Solution {
public:
    bool isLongPressedName(string name, string typed) {
        if(name.size() > typed.size())
            return false;
        if(name.size() == ){
            if(typed.size() == )
                return true;
            else
                return false;
        }
        // 遍历,name[i]和typed[j]相同,或者typed[j]和typed[j-1]相同
        int i=, j=;
        while(i < name.size() && j < typed.size()){
            if(name[i] == typed[j]){
                i++, j++;
            }else{
                if(typed[j] == typed[j-1])
                    j++;
                else
                    return false;
            }
        }
        // 遍历结束,name或者typed还有元素未遍历
        if(i < name.size())
            return false;
        while(j < typed.size()){
            if(typed[j] == typed[j-1])
                j++;
            else
                return false;
        }
        return true;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档