一、题目描述
二、示例
三、难度
简单
四、代码
Java版
public class Solution {
public static boolean isValid(String s) {
// 字符串长度为奇数,括号不匹配
if (s.length() % 2 == 1) return false;
Map<Character, Character> map = new HashMap<>();
map.put('(',')');
map.put('[',']');
map.put('{','}');
List<Character> stack = new LinkedList<>();
for (int i = 0; i < s.length(); ++i) {
//将左括弧进栈
if (map.containsKey(s.charAt(i))) {
stack.add(s.charAt(i));
}
else {
//栈不为空,若与当前右括弧匹配,则继续扫描
if (!stack.isEmpty()) {
if (map.get(stack.get(stack.size() - 1)) == s.charAt(i)) {
//出栈
stack.remove(stack.size() - 1);
}
else return false;
}
else return false;
}
}
// 字符串遍历完后,栈中还有元素,则不匹配
if (!stack.isEmpty()) return false;
return true;
}
public static void main(String[] args) {
System.out.println(isValid("()"));
System.out.println(isValid("()[]{}"));
System.out.println(isValid("(]"));
System.out.println(isValid("([)]"));
System.out.println(isValid("{[]}"));
System.out.println(isValid("([}}])"));
System.out.println(isValid("(("));
}
}