LeetCode(1003):检查替换后的字符串

题目描述

image1.png

image2.png

实现思路

题目的实质 其实是检查给定的字符串中 是否含有指定顺序的 'a' 'b' 'c'序列
很容易想到用栈来实现
首先,检查给定字符串的长度,如果不是3的倍数,一定不是有效的
其次,遍历字符串
1、若当前栈长度大于等于3,则检查靠近栈顶的3个元素是否分别为 'c',' b', 'a'
如果是,则做3次出栈(pop)操作
2、无论是否做出栈,都将当前字符推入栈
最后,检查栈是否空
如果栈已空,说明字符串中都是有序的abc序列,否则不是有效的

代码实现(Javascript)

要注意的是,遍历字符串的时候,应该走(数组长度+1)次
最后一次不作入栈操作

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    var len=s.length
    if(len%3!==0){
        return false
    }
    
    var stack=new Array()
    for(let i=0;i<=s.length;i++){
        if(stack.length>=3){
            if(stack[stack.length-1]==='c'&&stack[stack.length-2]==='b'&&stack[stack.length-3]==='a'){
                for(let j=0;j<3;j++){
                    stack.pop()
                }
            }
        }
        if(i===s.length){
            break
        }else{
            stack.push(s[i])
        }
    }

    return stack.length===0 ? true : false
};
posted @ 2020-10-24 11:12  BAEBAE996  阅读(77)  评论(0编辑  收藏  举报