• 【力扣】925. 长按键入


    你的朋友正在使用键盘输入他的名字 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 的字符都是小写字母。
     

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/long-pressed-name

    class Solution {
        public boolean isLongPressedName(String name, String typed) {
            int i = 0, j = 0;
    
            //注意这了用的是j < typed.length() ,因为typed为对比字段
            while(j < typed.length()){
    
                //说明相对,则两个指针同时向后挪动,这里加上i < name.length() 是因为有可能j的最后一个数被多次输入
                if(i < name.length() && name.charAt(i) == typed.charAt(j)){
                    i++;
                    j++;
    
                    //若是不等, 则判断typed的当前字符跟前一个是否相同,若相同,则j指针后移
                } else  if(j > 0 && typed.charAt(j) == typed.charAt(j-1)){
                    j++;
                } else {
                    //否则,直接返回false
                    return false;
                }
            }
            return i == name.length();
        }
    }

    时间复杂度:O(n+m)

    空间复杂度:未引入额外的空间,O(1)

    一个入行不久的Java开发,越学习越感觉知识太多,自身了解太少,只能不断追寻
  • 相关阅读:
    电信10兆指的是多少Mbps
    keycloak ssl-required报错问题处理
    Centos7 DNS神奇的配置
    angular4套用primeng样式
    Python库大全
    jquery根据name属性的高级选择
    Js String 属性扩展
    SQLSever 触发器
    IaaS, PaaS和SaaS
    Sql Server 基础知识
  • 原文地址:https://www.cnblogs.com/fengtingxin/p/13855347.html
Copyright © 2020-2023  润新知