package com.example.demo.leecode;
import java.util.Stack;
/**
* 合理的括号
* @Date 2020/12/10
* @author Tang
*
* 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
* 有效字符串需满足:
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
* 注意空字符串可被认为是有效字符串。
*/
public class ValidParentheses {
private Stack<Character> stack = new Stack();
public boolean execute(String s){
if(s == null || "".equals(s.trim())){
return false;
}
char[] chars = s.toCharArray();
for(char c : chars){
if(ifMatching(c)){
stack.pop();
continue;
}
stack.push(c);
}
return stack.size() == 0;
}
/**
* 是否匹配上栈中上一个字符
* @param c
* @return
*/
private boolean ifMatching(char c){
if(stack.size() == 0){
return false;
}
switch (stack.peek()){
case '{':
return c == '}';
case '(':
return c == ')';
case '[':
return c == ']';
default:
return false;
}
}
public static void main(String[] args) {
String value = "{(]}";
boolean result = new ValidParentheses().execute(value);
System.out.println(result);
}
}