为什么我会得到错误的结果?
Why do I get a wrong result?
下面是我的 Leetcode 20 代码。(给定一个仅包含字符 '(', ')', '{', '}', '[' 和 ']' 的字符串 s,确定输入是否字符串有效。
如果满足以下条件,则输入字符串有效:
左括号必须由相同类型的括号闭合。
左括号必须以正确的顺序闭合。)
当输入为“(])”时,我仍然是正确的。任何人都可以让我知道我的代码有什么问题吗?谢谢!
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for(char c: s.toCharArray()){
if(c == '(' || c == '[' || c == '{'){
stack.push(c);
}else{
if(stack.empty()){
return false;
}
if(c == ')' && stack.peek() == '('){
stack.pop();
}
if(c == ']' && stack.peek() == '['){
stack.pop();
}
if(c == '}' && stack.peek() == '{'){
stack.pop();
}
}
}return stack.empty();
}
}
在 for 循环的第二次迭代中,您有 char ],它与第一个条件不匹配,因此它继续到 else 块。其他 if 语句的 None 匹配,因此它不知道该怎么做,只是从循环的第 3 次迭代开始,在那里它看到 )
并且还看到 (
偷看所以 return 是空的。这就是问题所在。您需要在 else 块中添加一个额外的 else 以捕获与 4 个 ifs 不匹配的任何内容。
为了修复此特定测试,请仅添加对 ]
字符的检查。如果你看到那个角色而你还没有看到任何 [
s 那么 return false
希望对您有所帮助,如果没有,请告诉我,我会尽力澄清更多。
下面是我的 Leetcode 20 代码。(给定一个仅包含字符 '(', ')', '{', '}', '[' 和 ']' 的字符串 s,确定输入是否字符串有效。
如果满足以下条件,则输入字符串有效:
左括号必须由相同类型的括号闭合。 左括号必须以正确的顺序闭合。)
当输入为“(])”时,我仍然是正确的。任何人都可以让我知道我的代码有什么问题吗?谢谢!
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for(char c: s.toCharArray()){
if(c == '(' || c == '[' || c == '{'){
stack.push(c);
}else{
if(stack.empty()){
return false;
}
if(c == ')' && stack.peek() == '('){
stack.pop();
}
if(c == ']' && stack.peek() == '['){
stack.pop();
}
if(c == '}' && stack.peek() == '{'){
stack.pop();
}
}
}return stack.empty();
}
}
在 for 循环的第二次迭代中,您有 char ],它与第一个条件不匹配,因此它继续到 else 块。其他 if 语句的 None 匹配,因此它不知道该怎么做,只是从循环的第 3 次迭代开始,在那里它看到 )
并且还看到 (
偷看所以 return 是空的。这就是问题所在。您需要在 else 块中添加一个额外的 else 以捕获与 4 个 ifs 不匹配的任何内容。
为了修复此特定测试,请仅添加对 ]
字符的检查。如果你看到那个角色而你还没有看到任何 [
s 那么 return false
希望对您有所帮助,如果没有,请告诉我,我会尽力澄清更多。