1、对于“不规则序列”内多个左括号,应当分别配对,使每一对括号独立,而非嵌套关系。
例如对于:
([
匹配结果应该为
()[]
而非
([])
2、优先为右括号找左括号,当且仅当,所有右括号都有规则的匹配之后,才能考虑单身的左括号。例如对于:
([)
在遍历至第三位时,为第三位的右括号配对,变成:
([()
此时所有右括号已经配对,再为左括号补全:
()[]()
同理对于
[((]
匹配结果应该为
[]()()[]
而非
[()()]
3、被不规则序列隔断的左右括号不成其为配对。但如果在遍历到该右括号时,之前的操作已经将中间的不规则序列变为规则序列,那么仍然可以配对。
例如对于:
[)]
匹配结果应该是
[()]
而非
[]()[]
最终我们给出对比如下:
[(] 变为 []()[]
[)] 变为 [()]