/*
//很失败
class Solution {
public boolean isValid(String s) {
if(s == null || s.length() <= 1) return false;
int count1 = 0;
int count2 = 0;
int count3 = 0;
for(int i = 0, j = i + 1; i < s.length() - 1; i++) {
if(s.charAt(i) == '(') {
count1++;
if(s.charAt(j) != ')') {
return false;
}
}
if(s.charAt(i) == '[') {
count2++;
if(!(s.charAt(j) == '(' || s.charAt(j) == ']')) {
return false;
}
}
if(s.charAt(i) == '{') {
count3++;
if(!(s.charAt(j) == '(' || s.charAt(j) == '[' || s.charAt(j) == '{' || s.charAt(j) == '}')) {
return false;
}
}
if(s.charAt(i) == ')') {
count1--;
}
if(s.charAt(i) == ']') {
count2--;
}
if(s.charAt(i) == '}') {
count3--;
}
}
switch(s.charAt(s.length() - 1)) {
case '(':
++count1;
case ')':
--count1;
case '[':
++count2;
case ']':
--count2;
case '{':
++count3;
case '}':
--count3;
}
if(count1 == 0 && count2 == 0 && count3 == 0) {
return true;
} else {
return false;
}
}
}
*/
/*
因为括号是有顺序的并且每一对括号都是完整的
所以 除去中间项不说 每一个左括号与之对应的都应该是右括号 不然为false
*/
class Solution {
public boolean isValid(String s) {
if(s == null || s.length() == 0) return true;
Stack<Character> stack = new Stack();
for(char c : s.toCharArray()) {
if("({[".contains(String.valueOf(c))) {
stack.push(c);
}
if(c == ')') {
if(stack.empty() || stack.pop() != '(') {
return false;
}
}
if(c == ']') {
if(stack.empty() || stack.pop() != '[') {
return false;
}
}
if(c == '}') {
if(stack.empty() || stack.pop() != '{') {
return false;
}
}
}
return stack.empty();
}
}
//很失败
class Solution {
public boolean isValid(String s) {
if(s == null || s.length() <= 1) return false;
int count1 = 0;
int count2 = 0;
int count3 = 0;
for(int i = 0, j = i + 1; i < s.length() - 1; i++) {
if(s.charAt(i) == '(') {
count1++;
if(s.charAt(j) != ')') {
return false;
}
}
if(s.charAt(i) == '[') {
count2++;
if(!(s.charAt(j) == '(' || s.charAt(j) == ']')) {
return false;
}
}
if(s.charAt(i) == '{') {
count3++;
if(!(s.charAt(j) == '(' || s.charAt(j) == '[' || s.charAt(j) == '{' || s.charAt(j) == '}')) {
return false;
}
}
if(s.charAt(i) == ')') {
count1--;
}
if(s.charAt(i) == ']') {
count2--;
}
if(s.charAt(i) == '}') {
count3--;
}
}
switch(s.charAt(s.length() - 1)) {
case '(':
++count1;
case ')':
--count1;
case '[':
++count2;
case ']':
--count2;
case '{':
++count3;
case '}':
--count3;
}
if(count1 == 0 && count2 == 0 && count3 == 0) {
return true;
} else {
return false;
}
}
}
*/
/*
因为括号是有顺序的并且每一对括号都是完整的
所以 除去中间项不说 每一个左括号与之对应的都应该是右括号 不然为false
*/
class Solution {
public boolean isValid(String s) {
if(s == null || s.length() == 0) return true;
Stack<Character> stack = new Stack();
for(char c : s.toCharArray()) {
if("({[".contains(String.valueOf(c))) {
stack.push(c);
}
if(c == ')') {
if(stack.empty() || stack.pop() != '(') {
return false;
}
}
if(c == ']') {
if(stack.empty() || stack.pop() != '[') {
return false;
}
}
if(c == '}') {
if(stack.empty() || stack.pop() != '{') {
return false;
}
}
}
return stack.empty();
}
}