java 括号匹配_JAVA括号配对问题(要用栈来解决)

展开全部

import java.util.Stack;

/**

* 要求输入一行字符,输出e69da5e887aa62616964757a686964616f31333264633436配对的括号和不配对的括号的位置

* 例如:

*   输入:  (a+b))(

*   输出: 左边第1位括号和左边第5位括号对应,左边第6位括号没对应左括号,左边第7位没对应右括号。

*/

public class BaiduHelper {

public static void floatCloud(String toDeal){

Stack stack = new Stack();

stack.add(0);

for(int i=0; i

char c = toDeal.charAt(i);

if(c=='('){

stack.add(i+1);

}else if(c==')'){

int index = stack.pop();

if(index>0){

System.out.println("左边第"+index+"位括号和左边第"+(i+1)+"位括号对应");

}else if(index==0){

System.out.println("左边第"+(i+1)+"位括号没对应左括号");

stack.add(0);

}

}

}

if(stack!=null){

while(!stack.isEmpty()){

int index = stack.pop();

if(index!=0)

System.out.println("左边第"+index+"位括号没对应右括号");

}

}

}

public static void main(String[] args){

floatCloud("(a+b))(");

System.out.println();

floatCloud("(a+(b))))(");

System.out.println();

floatCloud("(a+b))())(");

System.out.println();

}

}

08c7a6dff39e4a21c5e2b9651c22997d.bmp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值