• 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
    };
    
  • 相关阅读:
    股票
    使用广播信道的以太网
    CSMA/CD 3
    可赎回债券
    matlab中的knn函数
    债券 账面值
    最优化作业 共轭梯度法 matlab代码
    债券和股票 溢价公式
    债券和股票
    CSMA/CD 续
  • 原文地址:https://www.cnblogs.com/baebae996/p/13868064.html
Copyright © 2020-2023  润新知