括号序列
题目:
思路:
这从该题观察可以的得出需要 一 一 对应匹配且({)}这种是不符合的,所以根据栈的先进后出的方式,凡是碰到一个左边的括号就自动将右边的括号放进一个栈内,等碰到不是左边的括号的时候就进行比对,看两个右边的括号是否相等,如果不等则顺序不符合,且到了最后顺便检查一下栈是否用空了,没有用空就是左括号比右括号多,不符合条件。
代码示例:
import java.util.Stack;
public class Solution {
public static void main(String[] args) {
String s = "()(()()";
System.out.println(isValid(s));
}
/**
* @param s string字符串
* @return bool布尔型
*/
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for (char c : s.toCharArray()) {
if (c == '(')
stack.push(')');
else if (c == '[')
stack.push(']');
else if (c == '{')
stack.push('}');
else if (stack.isEmpty() || stack.pop() != c)
return false;
}
return stack.isEmpty();
}
}