码迷,mamicode.com
首页 > 编程语言 > 详细

算法题:括号匹配(小中大括号序列)

时间:2018-11-12 13:13:50      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:括号匹配   等等   cte   print   string   表达式   ring   turn   函数   

括号序列由( )[ ]{ }组成,不合法的括号序列由( { ) },[ } { ],等等。编程实现一个函数,检查一个括号序列是否是合法的括号序列。

解法:

思路和“后缀表达式的求解”相似。我们借助栈,每读一个括号,如果是左括号,那么入栈,然后继续读下一个括号;如果是右括号,那么就要看看这个右括号和栈顶的括号是否匹配;如果匹配,那么弹出栈顶的括号,继续读下一个括号。当栈变空时,说明此括号序列是合法的。
 

public class Test05 {
 
	public static boolean isValid(String exp) {
		String left = "([{";
		String right = ")]}";
		Stack<Character> s = new Stack<Character>();
		for (int i = 0, len = exp.length(); i < len; i++) {
			char ch = exp.charAt(i);
			if (left.indexOf(ch) != -1) {
				s.push(ch);
			}
			else if (right.indexOf(ch) != -1) {
				if (!s.isEmpty()) {
					char temp = s.pop();
					if (ch != right.charAt(left.indexOf(temp))) {
						return false;
					}
				}
				else {
					return false;
				}
			}
		}
		return s.isEmpty();
	}
 
	public static void main(String[] args) {
		System.out.println(isValid("([()]{})"));
		System.out.println(isValid("((){}"));
		System.out.println(isValid("[{)()]"));
	}
 
}
 

  

算法题:括号匹配(小中大括号序列)

标签:括号匹配   等等   cte   print   string   表达式   ring   turn   函数   

原文地址:https://www.cnblogs.com/jobbible/p/9945708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!