提问,高手进来回答!

来源:百度知道 编辑:UC知道 时间:2024/05/09 18:06:07
对一个合法的数学表达式来说,其中的各大小括号{},[],()应是相互匹配的。设计算法 对以字符串形式的表达式,判断其中的括号是否匹配。

一楼:你的算法漏洞太大了吧?“1+[2+(3+{4+5])}”照你的算法是匹配的吧?
二楼:的确应该用递归,但是你的算法只能处理三层括号啊?第四层怎么办啊:1+(2+{3+[4+(5+6)]})

代码(Java):

import java.util.HashMap;
import java.util.Map;

public class BracesMatcher{
private static Brace square = new Brace('[',']');
private static Brace curly = new Brace('{','}');
private static Brace circle = new Brace('(',')');
private static Map<Character,Brace> braces = new HashMap<Character,Brace>();

static {
curly.setOutter(circle);
square.setOutter(curly);
circle.setOutter(square);

braces.put(square.left,square); // Create the relationship
braces.put(circle.left,circle);
braces.put(curly.left,curly);
}

public static void main(String[] args) {
BracesMatcher matcher = new BracesMatcher();
boole