这段代码是用来检查是否存在重复的括号的。我得到了真为每个字符串。我无法找到我错在哪里
public class DuplicatePar {
public static void main(String[] args) {
String str = "((a+b)+c)";
System.out.println(dupliPar(str));
}
public static boolean dupliPar(String str){
Stack<Character> s = new Stack<>();
for(int i = 0; i<str.length();i++){
if(str.charAt(i) != ')'){
s.push(str.charAt(i));
}
if(str.charAt(i) == ')' && s.peek() != '('){
while(s.peek() !='('){
s.pop();
}
s.pop();
}
else{
return true;
}
}
return false;
}
}
1条答案
按热度按时间6kkfgxo01#
如前所述-
假设第一个字符是'(',第一个'if'的条件为真(不是右括号),所以我们执行控制语句(push to stack)。
现在我们已经完成了“if”,第二个“if”有一个false条件,所以我们执行相关的“else”子句,并立即返回一个“true”结果。
添加“else”后:
同样,假设第一个字符是'(',第一个'if'的条件为真(不是右括号),所以我们执行控制语句(推栈)。
因此我们不执行第一个if语句的else子句,else子句是第二个if-else结构的全部,因此我们不会返回错误的结果,而是继续处理输入字符串。
这就是你所报告的特定问题的解决方案,但我不相信代码在所有情况下都能工作。