
替换字符串法
class Solution {
// 将成对的括号替换成空
// 如果整个字符串都能被替换成空说明给定的字符串有效
// 如果出现无法替换的情况说明字符串无效
public boolean isValid(String s) {
while (s.length() > 0) {
if (s.contains("()")) {
s = s.replace("()", "");
} else if (s.contains("[]")) {
s = s.replace("[]", "");
} else if (s.contains("{}")) {
s = s.replace("{}", "");
} else {
return false;
}
}
return true;
}
}
使用辅助栈
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (!stack.isEmpty()) {
if (c == ')' && stack.peek() == '(') {
stack.pop();
continue;
} else if (c == ']' && stack.peek() == '[') {
stack.pop();
continue;
} else if (c == '}' && stack.peek() == '{') {
stack.pop();
continue;
}
}
stack.push(c);
}
return stack.isEmpty();
}
}
使用辅助栈,if 块的另一种写法
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for(char c : s.toCharArray()) {
if (!stack.isEmpty()) {
if ((c == ')' && stack.peek() == '(')
|| (c == ']' && stack.peek() == '[')
|| (c == '}' && stack.peek() == '{')) {
stack.pop();
continue;
}
}
stack.push(c);
}
return stack.isEmpty();
}
}