gpt4 book ai didi

java - 使用 Stack 检查括号是否平衡?

转载 作者:行者123 更新时间:2023-11-30 08:39:55 28 4
gpt4 key购买 nike

我写了一个java代码来测试一个表达式是否平衡,也就是说,这个程序检查字符'(','{'和'['是否有相应的分隔符。但是我不能以获得所需的答案。出现问题,我无法弄清楚,因此需要您的帮助。这是代码。

package z_Stack_InfixToPostfix;
import java.util.Stack;

public class Driver_InfixToPostfix {

public static void main(String[] args) {
String s="(a+b)";
System.out.println(checkBalance(s));
}

public static boolean checkBalance(String expression){
boolean isBalanced=true;
Stack<Character> myStack=new Stack<Character>();
int length=expression.length();
int i=0;
while(isBalanced && i<length){
switch(expression.charAt(i)){
case '(': case '{': case '[' :
myStack.push(expression.charAt(i));
break;
case ')': case '}': case ']':
if(myStack.isEmpty()){
isBalanced=false;
}
else{
char opendelimiter=myStack.pop();
if(opendelimiter!=expression.charAt(i)){
isBalanced=false;
}
}
break;
}
i++;
}
if(!myStack.isEmpty()){
isBalanced=false;
}
return isBalanced;
}
}

最佳答案

char opendelimiter=myStack.pop();
if(opendelimiter!=expression.charAt(i)){
isBalanced=false;
}

这里你应该检查一下

    if(openedDeimilter == '('){
if(expression.charAt(i)!=')'){
isBalanced=false;
//break;
}
}else if(openedDeimilter == '['){
if(expression.charAt(i)!=']'){
isBalanced=false;
//break;
}
}else {
if(expression.charAt(i)!='}'){
isBalanced=false;
//break;
}
}

此外,一旦 isBalanced 设置为 false,您可以跳过对剩余字符串的迭代,如果它适合您的话。

关于java - 使用 Stack 检查括号是否平衡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35935280/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com