Leecode no.20 合理的括号

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);
}


}
posted @ 2020-12-10 11:47  六小扛把子  阅读(76)  评论(0编辑  收藏  举报