首页 > 编程语言 >栈相关算法

栈相关算法

时间:2022-11-23 17:00:36浏览次数:48  
标签:index tail length 算法 str 相关 stack2 stack1

 

 

 

 解题思路:

正则匹配捕获/ (.*)[/, 捕获到则进栈一, 捕获 ] 则出栈的思路

 

 解题代码

<script>
    var str = '2[3[a]2[1[b]2[c]]]'
    // var str = '2[3[a]1[b]]'

    function smartRepeat(str) {
      let stack1 = [],
        stack2 = [],
        index = 0,
        tail = str

      while (index < str.length) {
        if (/^(\d+)\[/g.test(tail)) {
          stack1.push(RegExp.$1)
          stack2.push('')

          index += RegExp.$1.length + 1
          tail = str.substring(index)
        } else if (/^(\w+)\]/g.test(tail)) {
          let value = RegExp.$1
          let times = stack1.pop()
          stack2.pop()
          stack2[stack2.length - 1] += value.repeat(times)

          index += RegExp.$1.length + 1
          tail = str.substring(index)
        } else {
          let times = stack1.pop()
          let value = stack2.pop()
          index++
          if (stack1.length == 0 && stack2.length == 0) {
            return value.repeat(times)
          }

          stack2[stack2.length - 1] += value.repeat(times)
        }
      }
    }

    console.log(smartRepeat(str))
  </script>

 

标签:index,tail,length,算法,str,相关,stack2,stack1
From: https://www.cnblogs.com/caijinghong/p/16918948.html

相关文章

  • 算法4: LeetCode_K个节点的组内逆序调整
    最近一直都是链表的算法练习,今天刷的是LeetCode原题,还是关于链表的节点逆转,难度等级:Hard.首先看题目:给定一个单聊表的头节点head和一个正整数k,要求实现k个节点的小组内......
  • 银行家算法判断状态是否安全
    processallocationneedavaiablep00  0 3 20 0 1 21 6 2 2p11 0 0 01 7 5 0 p21 3 5 42 3 5 6 p30 3 3 20 6 5 2......
  • 页面置换算法练习题
    例:在一个请求分页存储系统中,一个进程的页面走向为4,3,2,1,4,3,5,3,2,1,设分配给该进程的内存块数M=4,采用FIFO和LRU页面置换算法(每调进一个新页认为发生一次缺页中断)。计算缺页次数和缺......
  • 数据结构与算法测试题
    1.完全二叉树的第5层有9个节点,该完全二叉树总计有多少个节点( B   ).A.41B.24C.40D.25完全二叉树,说明前四层都是满结点,第五层有九个结点,故有:2^4 -1=15     ......
  • P8835 [传智杯 #3 决赛] 子串 ----- KMP算法、字符串匹配、字母大小写转换
    题目背景disangan233喜欢字符串,于是disangan333想让你找一些disangan233喜欢的串。题目描述在传智的开发课堂上,希望您开发一款文档处理软件。给定 TT 组询问......
  • disjkstra算法
    图的两种表示方式邻接矩阵优点:方便查找,方便操作缺点:需要空间过大#defineMAX_N1000#defineufr(i,x,y)for(inti=x;i<=y;++i)#definelfr(i,x,y)f......
  • 6种常见排序算法实现
    importjava.util.Arrays;/***解法1:冒泡排序*解法2:插入排序*解法3:选择排序*解法4:归并排序*解法5:快速排序*解法6:堆排序*///leetcodesubmitregio......
  • 最高法-举证期间内未提起鉴定,后续申请鉴定的;以及一审未提起鉴定,二审提起鉴定的,只要鉴
    1.(2021)最高法民申127号  固原润农电子商务有限公司、陕西纬睿信息科技有限公司建设工程施工合同纠纷再审审查与审判监督民事裁定书申请人主张:1.陕西纬睿公司超过法院......
  • node.js 实现国密算法
    node.js实现国密算法搭建node环境node.js下载官网下载:http://nodejs.cn/download/解压tar-xvfnode-v18.12.1-linux-x64.tar.xz配环境变量vi/etc/profile最......
  • 搜索引擎的那些事(32位MD5算法)
      对于学过密码学的同学来说,md5算法肯定不会很陌生。但是,对于我来说,md5是一个新的命题。那什么是md5呢?md5就是对已有的数据进行加密处理。当然,它还有别的用处,什么呢?比如......