• leetcode 925. Long Pressed Name


    判定是否长按

    var isLongPressedName = function (name, typed) {
                var i = 1, j = 0, n = name.length, m = typed.length;
                var last = name[0], iCount = 1
                while (i < n || j < m) {
                    var el = name[i];
                    if (el !== last) {
                        if (iCount !== 0) {
                            let jCount = 0
                            // console.log("j", j, m)
                            while (j < m) {
                                console.log("内循环", last, typed[j], j)
                                if (typed[j] !== last) {
                                    break //跳到外循环
                                }
                                j++
                                jCount++
                            }
    
                            if (jCount < iCount) {
                                return false
                            }
                            if (j == m && i < n) {
                                return false
                            }
                        }
                        last = el
                        iCount = 1
                    } else {
                        console.log("累加", el)
                        iCount++
                    }
                    i++
                }
                return true
    
            };
    
            console.log(isLongPressedName("alex", "aaleex"))
            console.log(isLongPressedName("saeed", "ssaaedd"))
            console.log(isLongPressedName("pyplrz", "ppyypllr"))
    

    更精简的实现

    var isLongPressedName = function(name, typed) {
        let j = 0;
        
        for (let i = 0; i < typed.length; i++) {
            if(name[j] == typed[i]) j++;
        }
        
        return j == name.length;
    };
    

    另一个

    var isLongPressedName = function (name, typed) {
           let nlen = name.length, tlen = typed.length;
            if (nlen > tlen) return false;
            
            let i = 0, j = 0;
            while (i < nlen && j < tlen) {
                let  nc = name.charAt(i);
                let  tc = typed.charAt(j);
                if (nc == tc) {
                    i++;
                    j++;
                } else {
                    if (j == 0 || tc != typed.charAt(j - 1)) {
                        return false;
                    }
                    j++;
                }
            }
            
            return i == nlen;
     
    };
    
  • 相关阅读:
    传统IO总结
    关于JAVA垃圾回收的一些小tips
    一个爬喜马拉雅音频的例子
    return研究
    Java基础知识-java.util.concurrent包下常见类的使用
    <a>链接的四个伪类顺序
    前端面试题
    setTimeout的作用以及setTimeout延时0毫秒的作用
    闭包的使用
    JavaScript typeof obj === ‘object’ 这样写有什么问题
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/12174341.html
Copyright © 2020-2023  润新知