import java.util.*;
public class Test3 {
//有效的括号
public static boolean isValid(String s) {
if(s.length() / 2 ==1)
return false;
Map<Character,Character> pairs = new HashMap<Character,Character>(){{
//key都为左括号,value都为右括号
put(')','(');
put(']','[');
put('}','{');
}};
Deque<Character> stack = new LinkedList<Character>();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
//该字符为左括号
if(pairs.containsKey(ch)){
//判断如果栈内无左括号或者栈顶无匹配的右括号
if(stack.isEmpty() || stack.peek() != pairs.get(ch)){
return false;
}
//有的话就把此时的栈顶删除 继续匹配
stack.pop();
}else{
//右括号就放入栈里
stack.push(ch);
}
}
//如果栈中为空,则全部匹配成功
return stack.isEmpty();
}
public static void main(String[] args) {
String s = "({})";
System.out.println(isValid(s));
}
}
Leetcote20.有效的括号
最新推荐文章于 2024-07-31 19:38:21 发布