package leetcode;
import java.util.Stack;
/**
* 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
* <p>
* 有效字符串需满足:
* <p>
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
* <p>
* 注意空字符串可被认为是有效字符串。
*/
public class leetcode20 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(isValid("()"));
System.out.println(isValid("{ }"));
System.out.println(isValid("[]"));
System.out.println(isValid(" "));
System.out.println(isValid(" }"));
}
public static boolean isValid(String s) {
Stack<Character> stack =new Stack();
char [] chars=s.toCharArray();
for(char c:chars) {
if(c =='(' || c == '{' || c =='[') {
stack.add(c);
}else {
if(stack.isEmpty())
return false;
if(c==')' && stack.pop() !='(')
return false;
if(c =='}' && stack.pop() !='{')
return false;
if(c==']' && stack.pop() !='[')
return false;
}
}
//最终符合有效字符的情况是:stack应该为空!
return stack.isEmpty();
}
}