美文网首页
leetcode-day9-长按键入[925题]

leetcode-day9-长按键入[925题]

作者: 孙静静 | 来源:发表于2020-10-22 00:45 被阅读0次
    image.png

    这里思想比较麻烦,先转为队列,再利用队列的先进先出,从字符串的第一位开始将两者比较完的的元素删除, 同时记录删除的元素,以便于判断typed字符串里面重复的字符,如果有重复字符,则删除该字符

    /**
     * @param {string} name
     * @param {string} typed
     * @return {boolean}
     */
    var isLongPressedName = function(name, typed) {
        if(typed === null || typed.length < name.length){
            return false;
        }
        let queue1 = [],queue2 = [];
        for(let i =0; i<name.length;i++){ // 转为队列
            queue1.push(name[i]);
        }
        for(let i =0; i<typed.length;i++){ // 转为队列
            queue2.push(typed[i]);
        }
        let queue2_del = '', queue1_del = '';
        while(queue2.length > 0){
            if(queue2[0] === queue2_del && queue1[0] !== queue1_del){  // 删除typed中重复字符
                queue2_del = queue2[0];
                queue2.shift();
                continue;
            }
            queue1_del = queue1[0];
            queue2_del = queue2[0];
            if(queue1_del === queue2_del){ // 两者相等,同时删除
                queue1.shift();
                queue2.shift();
            } else {
                return false;
            }
        }
        if(queue1.length > 0) return false;
        return true;
    };
    

    该题还有个双指标法,比较适合使用,后面有时间补充

    相关文章

      网友评论

          本文标题:leetcode-day9-长按键入[925题]

          本文链接:https://www.haomeiwen.com/subject/abjemktx.html