刷题34-判断括号序列是否合法

原题链接

扩展题目一------最长括号子串

题目描述

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列。
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

示例

输入:"["
输出:false

输入:"([)]"
输出:false

参考解法

import java.util.Stack;

public class Test {
    
    
	/**
	 * 判断括号序列是否合法 用栈来判断
	 * 
	 * @param s
	 * @return
	 */
	public static boolean isOK(String s) {
    
    
		Stack<Character> stack = new Stack<Character>();
		for (int i = 0; i < s.length(); i++) {
    
    
			char temp = s.charAt(i);
			if (temp == '(')
				stack.push(')');
			else if (temp == '[')
				stack.push(']');
			else if (temp == '{')
				stack.push('}');
			// 左括号后出现,右括号就要先出现
			else if(temp!=stack.pop())
				return false;
			// 这里表示右括号的数量比左括号多
			else if(stack.isEmpty())
				return false;
		}
		// 若栈不为空,则说明左括号比右括号的数量多
		return stack.isEmpty();
	}
}

猜你喜欢

转载自blog.csdn.net/Awt_FuDongLai/article/details/109678449