栈的使用例题

本文介绍了一道关于栈的应用题目——求最长合法括号子串。通过遍历字符串,利用栈的先进后出特性,遇到左括号入栈,遇到右括号时出栈并更新最长合法子串长度。栈中的节点记录对应括号的索引,以便判断括号匹配情况。
摘要由CSDN通过智能技术生成

最长合法括号子串

import java.util.*;

public class Main {
   

    public static void main(String[] args){
       Scanner in=new Scanner (System.in);
       String x=in.next();
       boolean vis[]=new boolean[x.length()];
       int mar[]=new int[x.length()+1],cnt=0;
       Stack<Node>st=new Stack<>();
       for(int i=0;i<x.length();i++) {  
          if(x.charAt(i)=='(')st.push(new Node('(',i));
          else if(x.charAt(i)==')'&&!st.isEmpty()) {
              Node x1=st.pop();
              vis[x1.in]=true;
              vis[i]=true;
          }
       }
       for(int i=0;i<vis.length ;i++) {
           if(vis[i]==true)cnt++;
           else {
               mar[cnt]++;
               cnt=0;
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值