我想从字符串中删除所有“未配对”或未配对的括号。

exampleStr = back-pay) zyzhk1219(17) zyzhk1329 zyzhk1595(15) zyzhk1988 zyzhk2004 zyzhk2131) jswioj((testsjkldf


预期的“括号平衡”字符串应为

back-pay zyzhk1219(17) zyzhk1329 zyzhk1595(15) zyzhk1988 zyzhk2004 zyzhk2131 jswiojtestsjkldf


我在stackoverflow上看到了一些基于ruby的解决方案。但是,找不到我可以在Java中使用的代码。

最佳答案

如何用伪代码完成:

initialize parenLevel = 0
for each character in string
    if char is ( increment parenLevel
    if char is )
        if parenLevel = 0, remove bad paren
        else, decrement parenLevel
next

initialize parenLevel = 0
for each character in string in reverse
    if char is ) increment parenLevel
    if char is (
        if parenLevel = 0, remove bad paren
        else, decrement parenLevel
next


在实践中如何实现:http://ideone.com/K3s0X

样本结果:

back-pay zyzhk1219(17) zyzhk1329 zyzhk1595(15) zyzhk1988 zyzhk2004 zyzhk2131 jswiojtestsjkldf

10-08 15:42