首页 > 其他分享 >925. 长按键入

925. 长按键入

时间:2025-01-18 14:25:47浏览次数:1  
标签:return name ++ typed fast 按键 925 size

题目

自己写的:

class Solution {
public:
    bool isLongPressedName(string name, string typed) {
        int slow = 0, fast = 0;
        while (fast < typed.size())
        {
            if (slow < name.size() && typed[fast] == name[slow])
                fast++, slow++;
            else if (fast > 0 && typed[fast] == typed[fast - 1])
                fast++;
            else 
                return false;
        }
        if (slow == name.size())
            return true;
        return false;
    }
};

特别要注意这段代码:

else if (fast > 0 && typed[fast] == typed[fast - 1])

一定要有前置条件fast > 0,否则会报错,因为我们后面用到了表示下标的fast - 1,没有这个前置条件的话,就可能会让下标为负,自然会报错,比如当name = "a",typed = "b"时,就会报错。

卡哥思路差不多,但是可能更科学吧。

img

卡哥代码:

class Solution {
public:
    bool isLongPressedName(string name, string typed) {
        int i = 0, j = 0;
        while (i < name.size() && j < typed.size()) {
            if (name[i] == typed[j]) { // 相同则同时向后匹配
                j++; i++;
            } else { // 不相同
                if (j == 0) return false; // 如果是第一位就不相同直接返回false
                // j跨越重复项,向后移动,同时防止j越界
                while(j < typed.size() && typed[j] == typed[j - 1]) j++;
                if (name[i] == typed[j]) { // j跨越重复项之后再次和name[i]匹配
                    j++; i++; // 相同则同时向后匹配
                }
                else return false;
            }
        }
        // 说明name没有匹配完,例如 name:"pyplrzzzzdsfa" type:"ppyypllr"
        if (i < name.size()) return false;

        // 说明type没有匹配完,例如 name:"alex" type:"alexxrrrrssda"
        while (j < typed.size()) {
            if (typed[j] == typed[j - 1]) j++;
            else return false;
        }
        return true;
    }
};

标签:return,name,++,typed,fast,按键,925,size
From: https://www.cnblogs.com/hisun9/p/18678420

相关文章

  • ADCP414、ADCP416四通道125MSPS速率ADC替代AD9653、AD9253,可提供ZZKK证明
    ADCP416-125/105/80是一款4通道、16位、125/105/80MSPS模数转换器(ADC),内置片内采样保持电路,专门针对低成本、低功耗、小尺寸和易用性而设计。该产品的转换速率最高可达125MSPS,具有杰出的动态性能与低功耗特性,适合比较重视小封装尺寸的应用。ADCP416-125特性和优势--电源供电:1.......
  • 51单片机学习日记:独立按键控制LED灯
    我们可以再单片机上看到4个独立的按键,控制一个LED灯的亮灭先用第一个就可以,我们先找到独立按键的原理图来看看如何通过按键来控制LED灯的亮灭;独立按键的一段接地,另一端接P3,则我们按下按键时会使端口为低电平,我们就可以通过逻辑:当P31=0(按下去按键)时让灯亮,当P31=1时灯灭。(大......
  • 新手如何学会单片机?(五)XC8P9530按键扫描以及功能处理
            单片机的按键扫描方法以及原理,百度有太多的案例解释,我这里就不做太多的赘述,只教大家如何利用XC8P9530配置输入上拉下拉,然后配合时基检测的方法。一般IO口按键检测要高电平有效,那IO口就要配置成输入下拉,反之则配置成输入上拉,一般我们单片机检测按键低电平有效的......
  • 实用键盘按键测试工具
    分享给大家一个windows实用小工具键盘按键测试工具工具功能很直接,就是键盘按键测试,能直观看到键盘的按键是否可用,有没有失灵,一般用不到,但用到的时候绝对可以帮到你界面如下你只管按,其他交给它,功能正常的按键会改变颜色,右下角reset可以重置界面,theme是设置界面风格,黑的......
  • RTOS_SDK-ESP8266环境搭建+独立按键
    本文针对ESP8266的RTOS_SDK开发编译流程出现的报错进行了一些解决,并且完成了按键控制LED功能环境准备硬件环境准备esp8266(焊接排针)独立按键杜邦线软件环境准备参考这位大佬:环境搭建教程ESP8266_RTOS_SDKAiThinkerIDE_V1.5.2注意事项出现mintty.exe报错......
  • Tkinter组件-Button按键
    Button按键Button简介在GUI图形界面中,用户需要有时候需要做一些确定的动作,例如播放视频,输入完账号密码后点击登录。这个时候需要就需要引入一个按钮(Button)供用户完成这个操作,在Tkinter内提供了Button方法,创建一个按钮。Button在Tkinter中的调用在Tkinter中,可以使用以......
  • 01-51单片机LED与独立按键
    一、单片机概述注意:个人学习笔记,里面涉及到的C语言和进程转换相关的知识在C语言部分已经写了,这里是默认都会的状态学习单片机。1.什么是单片机单片机,英文MicroControllerUnit,简称MCU。其内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功......
  • STM_32 按键点亮LED
    端口设置//LED的引脚设置//定义一个结构体GPIO_InitTypeDefGPIO5_InitStruct;//打开引脚的使能时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO5_InitStruct.GPIO_Pin=GPIO_Pin_5;GPIO5_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO5_InitStruct.GPIO_Sp......
  • 按键程序连按与不支持连按
    关于按键程序连按与不支持连按的解析。#u8KEY_Scan(u8mode){staticu8key_up=1;//按键按松开标志if(mode)key_up=1;//支持连按如果mode=1则使得标志位为1,否则不复位。if(key_up&&(KEY00||KEY10||KEY20||WK_UP1))//如果有按键按下{delay_ms(10);//去抖动等待10ms消抖key_up......
  • 正在测试和完善的CH552(CH549)USB下载之单按键带入电路实验
    一、设计理由CH552或CH549进入USB下载,通常需要两个按键,一个控制电源的通断,一个通过串联电阻(一头接VCC或V33)冷启动时抬高UDP电平。时序上是这样的:断电--按下接UDP的轻触开关--通电--松开接UDP的轻触开关。这样操作上一般需要双手并用,比较麻烦。二、电子电路本人设计的电路是想通......