zoukankan      html  css  js  c++  java
  • 数据结构之栈的应用(判断字符串中括号的合法性)

    数据结构之栈(判断字符串中括号的合法性)

    需求: 判断一个字符串中的括号是否成对,是否合法?

    const str1 = '((3223)2)2(2)'

    const str2 = ')22(12)sf1(sdfs'

    • 思路:

      • 创建一个后进先出的栈
      • 遍历字符串
      • 如果元素是( 压入栈中
      • 如果是 ),就要判断栈是否为空,如果为空返回‘不合法’;如果不为空,就弹出栈顶元素
      • 如果遍历结束了,就要再次判断栈是否为空,如果为空返回‘合法’,否则返回‘不合法’
    • 步骤:

       // 1. 引入栈结构的构造函数
      const Stack = require('./Stack')
      const str1 = '((3223)2)2(2)'
      const str2 = ')22(12)sf1(sdfs'
      
      // 2. 创建一个函数,在函数中初始化一个栈结构,遍历要判断的字符串
      /**
       * @description 判断一个字符串中包含的括号是否成对,是否合法
       * @param {String} str 要判断合法性的字符串
       */
      function is_legal_brackets(str) {
          
        // 初始化栈结构
        const stack = new Stack()
        // 遍历字符串
        for (const item of str) {
          if (item === '(') {
            stack.push(item)
          }
          if (item === ')') {
            if (stack.isEmpty()) {
              return '不合法'
            }
            stack.pop()
          }
        }
      
        return stack.isEmpty() ? '合法' : '不合法'
      }
      
       // 3. 调用定义好的is_legal_brackets函数
      console.log('str1是否合法? => ', is_legal_brackets(str1));  // 合法
      console.log('str2是否合法? => ', is_legal_brackets(str2));  // 不合法
      
  • 相关阅读:
    循环队列操作
    让测试人员参与软件设计
    Oracle之初探
    关注LoadRunner脚本回放日志中的Warning信息
    性能测试工具CurlLoader
    『原创』网站测试计划模板
    LoadRunner如何监控Linux下的系统资源
    搭建Linux学习环境安装CentOS5.4
    Linux下搭建Tomcat服务器
    性能测试分析之带宽瓶颈的疑惑
  • 原文地址:https://www.cnblogs.com/guojiabing/p/10989632.html
Copyright © 2011-2022 走看看