zoukankan      html  css  js  c++  java
  • 判断给定字符串中的大括号是否闭合

    判断给定字符串中的大括号是否闭合(返回True False;对于空字串,返回 True),在 Javascript 里,数组 Array 可以很方便的模拟栈的行为。

    1. 将大括号分为左括号和右括号
    2. 左括号看做入栈信号,右括号看做出栈信号
    3. 如果出栈时,没有与之匹配的元素,则结果不匹配,即返回 false
    4. 如果巡检完毕,得到的为空栈,则结果匹配,返回true

    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>判断给定字符串中的大括号是否闭合</title>
    </head>
    
    <body>
    </body>
    <script>
        function isBanlanced(str) {
            let arr = [...str];
            let stack = [];
    
            for (let i = 0; i < arr.length; ++i) {
                if (arr[i] == "{") {
                    stack.push("{");
                } else if (arr[i] == "}") {
                    if (stack.length === 0) {
                        return false;
                    }
                    console.log(arr[i], stack)
                    stack.pop();
                }
            }
    
    
            /**
             *
             * 注意:map 循环是无法跳出的,所以下面方法不可行,只能使用 for 循环
             *
             **/
            // arr.map((val, index) => {
            //     if (val == "{") {
            //         stack.push("{");
            //     } else if (val == "}") {
            //         if (stack.length === 0) {
            //             return false;
            //         }
            //         console.log(val, stack)
            //         stack.pop();
            //     }
            // })
    
            return stack.length === 0;
        }
    
        console.log(isBanlanced("[{}]{}{}}}}}{}{}{}{}{}{}{}"));  // false
        console.log(isBanlanced("{}{}{{}}"));  // true
        console.log(isBanlanced(""));  // true
    </script>
    
    </html>
    

    js 中 map 或 foreach 方法是无法跳出循环的,如果有需要跳出循环的遍历,推荐使用for循环

  • 相关阅读:
    线程的异常捕获与线程池的异常捕获
    设计模式-状态模式
    老王讲自制RPC框架.(四.序列化与反序列化)
    老王讲自制RPC框架.(三.ZOOKEEPER)
    老王讲自制RPC框架.(二.动态代理)
    4
    3
    2
    1
    前言
  • 原文地址:https://www.cnblogs.com/cckui/p/9909859.html
Copyright © 2011-2022 走看看