有效括号问题中输入"()"触发EmptyStackException的问题求助
有效括号问题中输入"()"触发EmptyStackException的问题求助
大伙好,我正在啃有效括号这个算法题,改代码改了好一会儿还是没搞定,先谢谢之前帮我解决语法问题的朋友们!
现在遇到的情况是,当输入s = "()"时,我的代码直接抛出了EmptyStackException,而不是预期返回true。具体错误栈信息如下:
java.util.EmptyStackException
at line 101, java.base/java.util.Stack.peek
at line 83, java.base/java.util.Stack.pop
at line 37, Solution.isValid
at line 54, DriverSolution.helper
at line 84, Driver.main
麻烦各位帮我看看问题出在哪,感激不尽!
我的代码如下:
import java.util.*; class Solution { Stack stack1 = new Stack(); public boolean isValid(String s) { int stringSize= s.length(); boolean g = true; for (int x=0; x <stringSize; x++) { switch (s.charAt(x)){ case '(': stack1.push(x); break; case '{': stack1.push(x); break; case '[': stack1.push(x); break; case ')':{ if(stack1.empty()){ g=false; return false;} else if (stack1.pop()=="("){ break;} else if (stack1.pop()=="{"){ g=false; return false; } else if (stack1.pop()=="["){ g=false; return false; } } case '}':{ if(stack1.empty()){ g=false; return false;} else if (stack1.pop()=="{"){ break;} else if (stack1.pop()=="("){ g=false; return false; } else if (stack1.pop()=="["){ g=false; return false; } } case ']':{ if(stack1.empty()){ g=false; return false;} else if (stack1.pop()=="["){ break;} else if (stack1.pop()=="("){ g=false; return false; } else if (stack1.pop()=="{"){ g=false; return false; } } } } return g; } }
备注:内容来源于stack exchange,提问作者sgx
相关产品推荐
相关产品推荐

