package com.company.LeetCode;
import java.util.Stack;
/**
* 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
* <p>
* 有效字符串需满足:
* <p>
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
* <p>
* 注意空字符串可被认为是有效字符串。
*/
public class LeetCode_20 {
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();
}
public static void main(String[] args) {
System.out.println(isValid("()"));
System.out.println(isValid("(){}[]"));
System.out.println(isValid("{[}]"));
System.out.println(isValid("}"));
}
}
输出为
true
true
false
false