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();
        }
    }
    
  • 相关阅读:
    Oracle数据库面试题【转载】
    年龄计算周岁
    丈夫的权力与妻子的职业水平
    JDK 8 and JRE 8 Supported Locales
    一笔画 奇点 偶点
    流水行船问题
    PL/SQL LOOP SAMPLE
    OpenCV——识别各省份地图轮廓
    OpenCV——轮廓面积及长度计算
    树莓派3安装opencv2程序无法运行
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13850475.html
Copyright © 2011-2022 走看看