import java.util.Map;
import java.util.HashMap;
import java.util.Stack;
public class ValidParentheses {
public static void main(String[] args) {
String test = "({{}{])";
System.out.println("return = " + isValid(test));
}
/*遇到一个s的字符,就把对应位进栈*/
public static boolean isValidBetter(String s) {
Stack stack = new Stack<>();
for(char c : s.toCharArray()) {
if(c == '{')
stack.push('}');
else if (c == '[')
stack.push(']');
else if (c == '(')
stack.push(')');
//栈顶出来的元素不等于c, false; 或者
else if(stack.pop() != c ||stack.empty())
return false;
}
return stack.empty();
}
/*遇到一个s的字符,就自己进栈*/
public static boolean isValid(String s) {
if (s == null || s.length() == 0) return false;
Map map = new HashMap<>();
Stack stack = new Stack<>();
map.put("(", ")");
map.put("[", "]");
map.put("{", "}");
for (int i = 0; i < s.length(); i ++) {
String tmp = String.valueOf(s.charAt(i));
System.out.println("tmp = " + tmp);
//如果栈为空,而且s第一个也不是左括号,那么false ,“}[]"
if (stack.empty() && !map.containsKey(tmp)) return false;
if (map.containsKey(tmp)) {
stack.push(tmp);
} else {
if(map.get(stack.peek()).equals(tmp)) {
stack.pop();
} else {
//如果栈不为空,它接收到的第一个右括号如果不能被栈顶匹配,那么false,"{]}"
return false;
}
}
}
return stack.empty() ? true : false;
}
}
一键复制
编辑
Web IDE
原始数据
按行查看
历史