gpt4 book ai didi

java - 在调车场保留括号

转载 作者:搜寻专家 更新时间:2023-11-01 03:55:43 24 4
gpt4 key购买 nike

我正在研究本质上是调车场算法,但将中缀移动到前缀而不是 RPN我正在尝试保留括号,而且我有一段很糟糕的时间。目前我的代码是

        String s = inFixList.get(i);
Stack<Character> opStack = new Stack<Character>();
Stack<Character> solutionStack = new Stack<Character>();
String solution = "";

for(char c : s.toCharArray())
{
if(Character.isLetter(c)||Character.isDigit(c))
{
solutionStack.push(c);
}
else if(c == '(')
{
opStack.push(c);
solutionStack.push(')');
}
else if(c == ')')
{
while(opStack.peek() != '(')
{
solutionStack.push(opStack.pop());
solutionStack.push('(');
}
opStack.pop();
}
else if (!Character.isSpaceChar(c))
{
if(opStack.isEmpty())
{
opStack.push(c);
}
else if(opStack.peek()!='(' &&(OPERATORS.indexOf(c) < OPERATORS.indexOf(opStack.peek())))
{
opStack.push(c);
}
else if(!opStack.isEmpty()&&(opStack.peek()!='('))
{
solutionStack.push(opStack.pop());
solutionStack.push('(');
opStack.push(c);

}
else
{
opStack.push(c);
}

}
}
while(opStack.size() != 0)
{
solutionStack.push(opStack.pop());
solutionStack.push('(');
}
while(!solutionStack.isEmpty())
{
solution+=solutionStack.pop();
}

System.out.println("Final Answer!"+solution);

这会正确输出左括号,但只有一种右括号。有人知道我应该在哪里添加它们吗?我发誓我错过了到达目的地的最后一个合乎逻辑的步骤......

最佳答案

我不确定这是否是问题所在,但我在您编写的代码中注意到

else if(c == '(')
{
opStack.push(c);
solutionStack.push(')');
}

你真的要在这里加一个右括号吗?使用左括号似乎更合理,但我可能错了。

关于java - 在调车场保留括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6804825/

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