我正在编写Java程序来验证括号/括号的正确关闭,但它不起作用。有人可以通过指出问题来帮助我吗?

发布于 2025-01-24 14:31:35 字数 1104 浏览 2 评论 0原文

输入格式

将在输入文件中有多行,每行都有一个非空字符串。您应该阅读输入直到文件结束。

编辑器中已经提供了处理输入操作的代码的一部分。

每种情况的输出格式

,如果字符串平衡,则打印“ true”,否则“ false”。

输入 - (({()}))) 预期输出 - 错误 实际输出 - 正确

public static boolean paranValidate(String input) {
    String[] chrArray = input.split("");
    Stack<String> stack = new Stack<String>();
    for (int i = 0; i < chrArray.length; i++) {
        if (chrArray[i].trim().equals("{"))
            stack.push("}");
        if (chrArray[i].trim().equals("("))
            stack.push(")");
        if (chrArray[i].trim().equals("["))
            stack.push("]");
        if (!stack.empty()) {
            if (chrArray[i].trim().equals("}") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            if (chrArray[i].trim().equals(")") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            if (chrArray[i].trim().equals("]") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            
        }
    }

    return stack.empty();
}

Input Format

There will be multiple lines in the input file, each having a single non-empty string. You should read input till end-of-file.

The part of the code that handles input operation is already provided in the editor.

Output Format

For each case, print 'true' if the string is balanced, 'false' otherwise.

Input - (({()})))
Expected Output - false
Actual Output - true

public static boolean paranValidate(String input) {
    String[] chrArray = input.split("");
    Stack<String> stack = new Stack<String>();
    for (int i = 0; i < chrArray.length; i++) {
        if (chrArray[i].trim().equals("{"))
            stack.push("}");
        if (chrArray[i].trim().equals("("))
            stack.push(")");
        if (chrArray[i].trim().equals("["))
            stack.push("]");
        if (!stack.empty()) {
            if (chrArray[i].trim().equals("}") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            if (chrArray[i].trim().equals(")") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            if (chrArray[i].trim().equals("]") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            
        }
    }

    return stack.empty();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倥絔 2025-01-31 14:31:35

正确的解决方案是:

class stackExample {

public static boolean paranValidate(String input) {
    String[] chrArray = input.split("");
    Stack<String> stack = new Stack<String>();
    for (int i = 0; i < chrArray.length; i++) {
        if (chrArray[i].trim().equals("{"))
            stack.push("}");
        if (chrArray[i].trim().equals("("))
            stack.push(")");
        if (chrArray[i].trim().equals("["))
            stack.push("]");
        if (!stack.empty()) {
            if (chrArray[i].trim().equals("}") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            if (chrArray[i].trim().equals(")") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            if (chrArray[i].trim().equals("]") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
        }
        else return false;
    }

    return stack.empty();
}

Correct Solution is:

class stackExample {

public static boolean paranValidate(String input) {
    String[] chrArray = input.split("");
    Stack<String> stack = new Stack<String>();
    for (int i = 0; i < chrArray.length; i++) {
        if (chrArray[i].trim().equals("{"))
            stack.push("}");
        if (chrArray[i].trim().equals("("))
            stack.push(")");
        if (chrArray[i].trim().equals("["))
            stack.push("]");
        if (!stack.empty()) {
            if (chrArray[i].trim().equals("}") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            if (chrArray[i].trim().equals(")") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
            if (chrArray[i].trim().equals("]") && chrArray[i].trim().equals(stack.peek()))
                stack.pop();
        }
        else return false;
    }

    return stack.empty();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文