zoukankan      html  css  js  c++  java
  • 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();
        }
    }
    
  • 相关阅读:
    使用Docker容器来源码编译etcd
    PHP开发第一个扩展
    CI框架SESSION重写
    XMLHttpRequest的跨域请求
    PHP哈希表碰撞攻击
    empty、isset、is
    PHP实现4种排序算法
    C实现9种排序算法
    Debian、Ubuntu常用命令大全
    Java中 int和Integer的区别+包装类
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13850475.html
Copyright © 2011-2022 走看看