java - 尝试检查有效的括号/方括号配对

标签 java for-loop boolean character

给定一串仅由圆括号、方括号等组成的字符串,如果配对正确,我会尝试返回 true。 (还有一些类似的问题,但它们涉及更复杂的东西,如数组、字符串中的其他字符等)

这是我的代码,当我输入“()”时它返回 false

class Solution {
    public boolean isValid(String s) {
        if (s.length() < 2) {
            return false;
        }

        for (int i = 0; i < s.length() - 1; i++) {
            char char1 = s.charAt(i);
            char char2 = s.charAt(i + 1);
            if ((int) char1 != (int) char2) {
                return false;
            }
        }
        return true;
    }
}

如有任何帮助或建议,我们将不胜感激!

最佳答案

您可以使用 stack来解决这个问题。

假设您开始循环字符串的字符并且有一个堆栈...

如果您将左括号压入堆栈,然后在相应的右括号出现时将括号从堆栈中弹出 - 您应该在字符串检查结束时得到一个空堆栈。

如果字符串循环结束时堆栈为空,则所有括号都成对。

如果堆栈为空并且还有更多字符需要检查(即循环未完成),则括号不会配对。

如果您找到一个右括号,然后从堆栈中弹出,但没有找到相应的左括号,这也意味着括号未正确配对。对于这种情况,您可以使用一些代码,例如:

private static boolean match(char fromStack, char next) {
    return fromStack == '[' && next == ']' || fromStack == '{' && next == '}' || fromStack == '(' && next == ')';
}

关于java - 尝试检查有效的括号/方括号配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46918167/

相关文章:

.net - RowLeave 上的 Datagridview 没有为 boolean 值分配正确的值

c# - 我的验证(检查数字是否在数组中,然后将其更改为不同)有什么问题?

python - 在 python 列表中返回多个数字

javascript - Google 应用程序脚本 - 遍历电子表格中的行

C# 遍历 bool 值

java - 在 scala 类中使用 java list 的奇怪行为

java - 如何在点击后退按钮 5 次时显示插页式广告

java - 常规 Java 项目枚举的 JsonFormat 解决方案

java - 嵌入式 if 语句的替代方案?

vba - 对于每个函数,循环遍历特定命名的工作表