java - 使括号匹配的方法

标签 java methods

我正在尝试做一个练习题,我必须编写一个方法,该方法接受一串大括号,如果括号匹配则返回 true,否则返回 false。如果我传递的是空字符串,它需要返回 true。我们还可以假设给定的字符串可以包含 { 和 } 或为空。

匹配必须按照正确的顺序进行,例如“{}”而不是“}{”
这些是括号匹配的例子:
{}
{}{}
{{}}
{{{}{{}}}}

这些是括号不匹配的例子:
{
}{
{{}
{{}}}{}

这是我目前拥有的(请记住,我对编码还比较陌生):

public boolean bracketsMatch(String brackets)
{
    int count = 0;
    if (brackets.length() % 2 == 1){
        return false;
    }
    for(int i = 0; i < brackets.length(); i++){
        if ((brackets.charAt(i)+"") == "{"){
            count++;
        } else if ((brackets.charAt(i)+"") == "}"){
            count--;
        }
        if (count == -1){
            return false;
        }
    }
return count == 0;
}

像这样的输入 }{ 和 {}}{}{ 这仍然没有返回正确的输出。

最佳答案

您的逻辑有效,但是您比较字符的方式是错误的:永远不要使用 == 来比较字符串值 - 它测试引用相等性(它们是否是同一对象)。请尝试 brackets.charAt(i) == '{'

关于java - 使括号匹配的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48359565/

相关文章:

Java - 同步方法无法正常工作

java - 从另一个按钮的 mouseClicked 方法访问一个按钮?

javascript - 列出对象的所有增强

java - 哪个类可以访问我的方法?

python - . + tab AutoComplete 在 Jupyter Notebook 中不起作用

java - 为 Callable 类型线程分配优先级

java - 如何让SmartGWT标签的内容不删减空格?

java - 登录并从网页 Jsoup 提取数据

java - Firebase Storage RejectedExecutionException 异常

java - Gradle包括JavaFX for Heroku