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

2020-10-22  本文已影响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;
};

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

上一篇 下一篇

猜你喜欢

热点阅读