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

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

示例 1:

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

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

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

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

提示:

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

思路:双指针法

1.如果name[i]==typed[i],都向后遍历一下

2.如果name[i]!=typed[i],但是typed[i]==typed[i-1],typed向后遍历一下

3.如果name[i]!=typed[i],typed[i]!=typed[i-1],return false;

提交的代码:

class Solution {
    public boolean isLongPressedName(String name, String typed) {
       if(typed.length()==0)
         {
             return false;
         }
         int i,j;
         for(i=0,j=0;i<name.length()&&j<typed.length();)
         {
             if(name.charAt(i)==typed.charAt(j))
             {
                 i++;
                 j++;
             }
             else
             {
                 if(j!=0&&typed.charAt(j)==typed.charAt(j-1))
                 {
                     j++;
                 }
                 else if(j!=0&&typed.charAt(j)!=typed.charAt(j-1))
                 {
                     return false;
                 }
                 else if(j==0)
                 {
                     return false;
                 }
             }
         }
         if(j!=typed.length())
         {
             while(j<typed.length()&&typed.charAt(j)==typed.charAt(j-1))
             {
                 j++;
             }
         }
         if(i!=name.length()||j!=typed.length())
         {
             return false;
         }
         return true;
            
    }
}

完整的代码:

public class Solution925 {
     public static boolean isLongPressedName(String name, String typed) {
         if(typed.length()==0)
         {
             return false;
         }
         int i,j;
         for(i=0,j=0;i<name.length()&&j<typed.length();)
         {
             if(name.charAt(i)==typed.charAt(j))
             {
                 i++;
                 j++;
             }
             else
             {
                 if(j!=0&&typed.charAt(j)==typed.charAt(j-1))
                 {
                     j++;
                 }
                 else if(j!=0&&typed.charAt(j)!=typed.charAt(j-1))
                 {
                     return false;
                 }
                 else if(j==0)
                 {
                     return false;
                 }
             }
         }
         if(j!=typed.length())
         {
             while(j<typed.length()&&typed.charAt(j)==typed.charAt(j-1))
             {
                 j++;
             }
         }
         if(i!=name.length()||j!=typed.length())
         {
             return false;
         }
         return true;
            
        }
     public static void main(String[] args)
     {
         //String a="pyplrz";
         //String b="ppyypllr";
         String a = "vtkgn";
         String b = "vttkgnn";
         System.out.println(isLongPressedName(a,b));
     }
}

Leetcode--925. 长按键入相关推荐

  1. LeetCode 925. 长按键入(双指针)

    1. 题目 你的朋友正在使用键盘输入他的名字 name. 偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次. 你将会检查键盘输入的字符 typed. 如果它对应的可能是你的朋 ...

  2. leetcode 925. 长按键入

    题目描述: 你的朋友正在使用键盘输入他的名字 name.偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次. 你将会检查键盘输入的字符 typed.如果它对应的可能是你的朋友的 ...

  3. 2022-2-9 Leetcode 925.长按键入

    第一反应用哈希表,但是不行 class Solution {public:bool isLongPressedName(string name, string typed) {if(name.size ...

  4. 台安变频器n2按键说明_力扣 925. 长按键入

    925. 长按键入 题目描述 你的朋友正在使用键盘输入他的名字 name.偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次. 你将会检查键盘输入的字符 typed.如果它对应 ...

  5. Leetcode:925. 长按键入

    bool isLongPressedName(char * name, char * typed){int n=strlen(name),t=strlen(typed);int i=0,j=0;whi ...

  6. 有效的括号长按键入验证外星语词典字符的最短距离用栈实现队列

    有效的括号 来源:杭哥 20. 有效的括号 - 力扣(LeetCode) bool isValid(char * s) {int sz=strlen(s);char stack[sz];int k=0 ...

  7. LeetCode 925 Long Pressed Name

    LeetCode 925 Long Pressed Name 题目链接 Your friend is typing his name into a keyboard. Sometimes, when ...

  8. Leetcode每日一题:925.Long Pressed Name(长按键入)

    大致意思就是typed对应位置上的相同字符数要大于等于name对应位置上的字符 思路:双指针遍历,每次都找出对应位置上字符的个数,再比较即可,注意不要忘了typed字符串过长的问题: bool isL ...

  9. LeetCode简单题之长按键入

    题目 你的朋友正在使用键盘输入他的名字 name.偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次. 你将会检查键盘输入的字符 typed.如果它对应的可能是你的朋友的名字( ...

  10. 925. Long Pressed Name 长按键入

    你的朋友正在使用键盘输入他的名字 name.偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次. 你将会检查键盘输入的字符 typed.如果它对应的可能是你的朋友的名字(其中一 ...

最新文章

  1. 斯坦福大学Christopher Manning:Transformer语言模型为什么能取得突破
  2. Dockerfile 常用指令 - 每天5分钟玩转 Docker 容器技术(16)
  3. Unity3D 重写下拉菜单/Dropdown组件、开启每个按钮可用
  4. 中山大学附属第一医院精准医学研究院 消化系统肿瘤研究于君课题组招聘启事...
  5. .net MVC在服务端代码输出html字符串
  6. R语言 par()函数
  7. Flutter TextField设置默认值默认值和光标位置
  8. wap网游php源码,wap 文字游戏
  9. 大数据丨网络爬虫技术总结
  10. 深度学习常用数据集汇总
  11. 【Arduino 连接 SD 卡模块实现数据读写】
  12. 2021-09-07体脂秤模块用来做什么?开发八电极体脂秤方案
  13. CentOS: Kernel panic - not syncing: Fatal exception
  14. mysql怎么定位cpu高_Mysql数据库服务器CPU冲高问题定位及分析
  15. 笨木头的Unity3d常用操作介绍
  16. 不规则现金流 java设计_第三节不规则现金流的计算
  17. ADSP-21489的开发详解:VDSP+自己编程写代码开发(1-如何来做21489和21479的开发?简单说两句)
  18. burpsuite靶场系列之客户端漏洞篇 - 跨站脚本(XSS)专题
  19. php如何openssl_encrypt加密解密
  20. 达内计算机软件测试,达内软件测试培训让我拥有了实际工作经验

热门文章

  1. 数据结构--队列Queue--循环顺序队列
  2. selenium定位输入框_[Selenium 粗浅笔记] 用Selenium填写表单
  3. 指标波动多大才算是异常?
  4. Jupyter Notebook安装 nbextensions 插件
  5. linux nginx 图片服务器,搭建Nginx图片服务器(Linux)
  6. (十九)【AAAI2021】Knowledge-Enhanced Hierarchical Graph Transformer Network for Multi-Behavior Recommend
  7. Android App包瘦身优化实践
  8. 论文浅尝 | Knowledge Vault: 全网规模的知识概率融合方法
  9. 以太网和路由设置,内网和外网同时上
  10. 法律规则鬼畜图解||全面易懂的旅游投诉赔偿标准