判断字符串中符号是否成对出现

本文介绍了一个使用堆栈实现的符号匹配算法,该算法可以检查给定字符串中的括号(包括圆括号、方括号和花括号)是否正确地配对和闭合。通过遍历字符串并将左括号压入栈中,遇到右括号时从栈顶弹出并检查是否与之匹配。
	public static void main(String[] args) {
		//利用堆棧的概念,先进后出的原则判断对应的符号是否成对出现
	    //定义一个字符串和栈
		String s="abc([{adsf}]s)df";
		Stack ss=new Stack();
		boolean flag=true;
		char c;//定义一个char 遍历字符串的时候接收
		//依次遍历字符串,取出符号放入栈中
		for (int i = 0; i < s.length(); i++) {
			c=s.charAt(i);
			if (c=='('||c=='['||c=='{') {
				ss.push(c);//把符号压入到栈中
			}
			if (c==')'||c==']'||c=='}') {
				if (ss.isEmpty()) {
					flag=false;//栈是空的代表符号是成对出现的
					break;
				}else {
					//ss.peek()是调用栈顶部的对象 ss.pop()是一处堆栈顶部的对象
					if ((c==')'&&ss.peek()==(Object)'(')||(c==']'&&ss.peek()==(Object)'[')||(c=='}'&&ss.peek()==(Object)'{')) {
						ss.pop();//出栈
					} else {
	                   flag=false;
	                   break;
					}
				}
			}
			
		}
			if (!ss.isEmpty()) {
				flag=false;
			}
			if (flag) {
				System.out.println("该字符创串号配对,即符号成对出现");
			} else {
				System.out.println("该字符创串号不配对,即符号不成对出现");
			}
		}
	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值