运用栈的知识,首先判断元素
1.左括号,则元素入栈,继续判断下一个元素
2.右括号,则读取栈顶元素,如果不互相匹配,则返回false
package com.company;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
boolean valid = isValid1("((({})))");
System.out.println(valid);
}
public static boolean isValid1(String s) {
Stack<Character> stack = new Stack<>(); //创建栈
for (int i = 0; i < s.length(); i++) { //遍历
char ch = s.charAt(i);
if (ch == '(' || ch == '[' || ch == '{') { //左括号入栈
stack.push(ch);
} else {
if (stack.isEmpty()) { //栈空返回false
return false;
}
char topChar = stack.pop(); //栈顶元素出栈
if (ch == ')' && topChar != '(') { //括号不匹配返回false
return false;
} else if (ch == ']' && topChar != '[') {
return false;
} else if (ch == '}' && topChar != '{') {
return false;
}
}
}
return stack.isEmpty();
}
}