一.问题描述
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
二.示例代码
private static final Map<Character, Character> map = new HashMap<Character, Character>() {{
put('{', '}');
put('[', ']');
put('(', ')');
}};
public static void main(String[] args) {
String s = "()[]{}{}";
Boolean result = validBrackets(s);
System.out.println(result);
}
private static Boolean validBrackets(String str) {
if (StringUtils.isEmpty(str)) {
return false;
}
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (map.containsKey(c)) {
stack.push(c);
}
if (map.containsValue(c)) {
if (stack.empty()) {
return false;
}
if (!map.get(stack.pop()).equals(c)) {
return false;
}
}
}
if (!stack.empty()) {
return false;
}
return true;
}