LeetCode:长按键入

题目描述

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

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

思路

  • 大致题意为:判断输入的名字中是否存在某些字符因为手抖重复输入
  • 朋友的名字是name,朋友输入的名字是typed
  • 通过charAt()可以取到字符串中的指定下标的字符
  • name.charAt(i)表示name中的字符,typed.charAt(j)表示typed中的字符
  • 从头开始比较,情况①如果name.charAt(i)==typed.charAt(j),那么i,j均++,比较下一个字符,相当于两个指针
  • 情况②如果不相等,那么就比较typed.charAt(j)是否等于typed.charAt(j-1),如果相等,那么就是手抖重复输入了,只需要j++即可
  • 情况③,以上两种情况均不满足,说明当前这个字符,既不是名字中当前顺序应该出现的字符,也不是重复输入的字符,返回false即可

代码

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

猜你喜欢

转载自blog.csdn.net/weixin_43939602/article/details/114122927