zoukankan      html  css  js  c++  java
  • 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;
     
    };
    
  • 相关阅读:
    Java中Collection和Collections的区别(转载)
    equals和==的区别
    【转载】String、StringBuffer与StringBuilder之间区别
    Mybatis实现
    springMVC---文件上传
    java---Map接口实现类
    java---迭代器(Iterator)
    java---泛型
    java---StringBuilder类的用法(转载)
    c#开源项目收集
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/12174341.html
Copyright © 2011-2022 走看看