【发布时间】:2023-03-25 18:34:01
【问题描述】:
我正在尝试创建一个将字符串作为参数放入其构造函数的程序。我需要一种方法来检查字符串是否是平衡的括号表达式。它需要处理 ({ [ ] } ) 每个打开需要与其对应的右括号保持平衡。例如,用户可以输入平衡的 [({})] 和不平衡的 }{。这不需要处理字母或数字。我需要使用堆栈来执行此操作。
我得到了这个伪代码,但不知道如何在 java 中实现它。任何建议都会很棒。
更新-抱歉忘记发布我到目前为止的内容。一切都搞砸了,因为起初我试图使用 char,然后我尝试了一个数组.. 我不确定该去哪里。
import java.util.*;
public class Expression
{
Scanner in = new Scanner(System.in);
Stack<Integer> stack = new Stack<Integer>();
public boolean check()
{
System.out.println("Please enter your expression.");
String newExp = in.next();
String[] exp = new String[newExp];
for (int i = 0; i < size; i++)
{
char ch = exp.charAt(i);
if (ch == '(' || ch == '[' || ch == '{')
stack.push(i);
else if (ch == ')'|| ch == ']' || ch == '}')
{
//nothing to match with
if(stack.isEmpty())
{
return false;
}
else if(stack.pop() != ch)
{
return false;
}
}
}
if (stack.isEmpty())
{
return true;
}
else
{
return false;
}
}
}
【问题讨论】:
-
伪代码算法看起来很准确,为什么不发布到目前为止的实现。
-
void main(String[] args...) { //code here };很抱歉,您甚至有伪代码,您必须将其翻译成Java。或者至少试一试,然后自己失败......也许,如果你的问题有任何努力的迹象 - 如FAQ中所述 - 将有助于获得一些帮助,而不是一些陈旧的冷嘲热讽。 .. -
我发布了到目前为止我一直在做的工作,但我一开始忘记发布了,非常感谢
-
您首先将循环的索引压入堆栈,然后尝试弹出一个字符。您应该使用字符堆栈并将左大括号推到它上面。然后,当您找到右大括号时,将顶部元素弹出并查看它是否正确匹配左大括号。然后继续。如果最后有一个空堆栈,则字符串是平衡的。
-
codereview.stackexchange.com/questions/45916/… 看看你就会知道击球手的想法。
标签: java stack pseudocode