【发布时间】:2014-09-22 17:00:25
【问题描述】:
我试图确定一个字符串是否有正确的右括号。
为此,我使用以下三个括号对。
[]
()
{}
只要格式正确,括号也可以嵌套。
)([]{} - Does not have properly closed brackets because )( is reverse order
[()] - Does contain properly closed brackets.
我尝试过使用正则表达式,经过一番摸索,我明白了。
[^\(\[]*(\(.*\))[^\)\]]*
但是,这样做存在一些问题。
只匹配括号,不匹配括号
我不明白为什么它不匹配括号。
在我的示例中,我清楚地在括号前使用了反斜杠。
输入
[] - true
[()] - true (nested brackets but they match properly)
{} - true
}{ - false (brackets are wrong direction)
}[]} - false (brackets are wrong direction)
[[]] - true (nested brackets but they match properly
【问题讨论】:
-
你向我们展示一些输入和预期输出如何。
-
@Joh regex 是不可能完成的任务。您需要使用此输入更新您的问题
([][()]{}{{}[]}) -
@AvinashRaj 你完全错了。
-
@AvinashRaj 这是可能的。
-
请阅读答案。我发布了基于递归正则表达式的工作解决方案。顺便说一句,正则表达式解决方案也可以在 O(n) 时间内工作,尽管可能有更大的常数。