验证括号配对

题目: 已知一个string 类型字符串s,s仅仅由'('')''{''}''[' 和 ']'组成

根据以下法则来判断字符串是否合法:

括号类型必须完全配对, "()" 和 "()[]{}"是合法的,但是"(]" 和 "([)]"是非法的

思路:既然需要配对,后进的需要先出,我们想到栈就是不错,满足要求,以下是java代码

public boolean isValid(String s) {
		boolean result = true;
		if (s.length() == 0)
			return result;
		Stack<Character> stack = new Stack<Character>();
		Character out;
		char[] temp = s.toCharArray();
		for (char a : temp) {

			if (a == '{' || a == '[' || a == '(')
				stack.push(a);
			// Character out;
			if (a == '}' || a == ')' || a == ']') {
				if (!stack.isEmpty()) {     // 处理']'类型
					out = stack.pop();
					if (a == '}' && out == '{')
						continue;
					if (a == ')' && out == '(')
						continue;
					if (a == ']' && out == '[')
						continue;
					result = false;
					return result;
				} else {
					result = false;
				}
			}
		}
		if (!stack.isEmpty())  //处理由盈余的左半边括号 '('类型
			result = false;
		return result;

	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值