Java中利用集合来判断表达式中所含括号是否匹配的问题

题目是:

假设一个算术表达式中可以包含两种括号:圆括号和方括号;且这两种括号
可任意的次序嵌套使用,如 ( [ ] ( ) ) 或者 [ ( [ ] ) ] 是正确的匹配,而 [ ( ) 或
( ( ) ) ] 或 ( [ ] ( )均是错误的匹配,尝试编写程序来判断给定的表达式是否是正确的匹配?

我不知道从哪里入手 觉得找不到一个判断的标准。。。求大神指导!!!!

这个应该是这样考虑。

第一个和倒数第一个。

第2个和倒数第二个匹配

依次类推。。
只要都对的上就是正确的。追问

将括号提取先用集合保存

对应首末想匹配 大致这样实现

只是这个匹配的问题 每次还要分辨是圆括号还是方括号 就难解决了

追答

这个不需要。你保存后就可以用equals来判断,这都是字符串。

追问

我不是这个意思

我想说equals的对象有偶然性需要根据给定的表达式来

加入有匹配的三对 那么这三对嵌套的次序还有几种情况

更别提加入匹配是有n对???

追答

要不你直接给个需求。举个例子,不是很明白你的难处。我来写代码。

追问

我的意思是有没有一个通用的方法来做判断


比如分别给定表达式

    (s+y)[7-8](9+1)

    ([2-1](3-1))

    [(3-1)[3-1]]

来做判断?

追答

是正规表达式不,。比如方括号里肯定是有园括号的。

追问

不是正规

嵌套次序随意 但是必须是有对应的匹配

不能缺少对应括号 或者([ )这种非对应起来的次序

追答

([])这种可以吗?里面没写任何东西的。

追问

可以的

温馨提示:答案为网友推荐,仅供参考
相似回答