LeetCode 925. 长按键入

题目链接

925. 长按键入
Easy

题目思路

这个也是个双串匹配的问题,但是是属于较简单的匹配问题。
给定两个字符串,问这两个字符串是否代表同一个内容。
输入typed字符串中可能存在重复输入的键,这个时候我们可以忽略它。
那么我们用双指针去判断即可,其中i代表第一个字符串的浮标,j代表第二个字符串的浮标

  • 如果i, j指向的字符相等,都往下移动一位
  • 如果不相等
  1. typed出现了重复输入的键,那么我们直接让j往下挪一位即可
  2. 否则就是typed中出现了name中没有出现过的字符,可以直接返回false

最后我们还需要检查typed字符串剩下的字符是否都为重复输入的键。如果否,就应该返回false
最后我们返回i >= name.length()即可。

代码实现

class Solution {
    public boolean isLongPressedName(String name, String typed) {
        int i = 0;
        int j = 0;
        while(i < name.length() && j < typed.length()){
            if(name.charAt(i) == typed.charAt(j)){
                i++;
                j++;
            }else{
                if(j >= 1 && typed.charAt(j) == typed.charAt(j - 1)){
                    j++;
                }else{
                    return false;
                }
            }
        }
        while(j < typed.length()){
            if(typed.charAt(j) != typed.charAt(j - 1)){
                return false;
            }
            j++;
        }
        return i >= name.length();
    }
}
原文地址:https://www.cnblogs.com/ZJPaang/p/13850475.html