码迷,mamicode.com
首页 > 编程语言 > 详细

Java算法-括号问题

时间:2015-04-09 15:34:03      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:java算法   括号问题   

下面的代码用于判断一个串中的括号是否匹配所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉

例如: ..(..[..]..).. 是允许的; ..(…[…)….]…. 是禁止的

对于 main 方法中的测试用例,应该输出: false true false false

public class 括号问题 {
    public static boolean isGoodBracket(String s) {
        Stack<Character> a = new Stack<Character>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == ‘(‘) // 将每个第一次匹配的括号的匹配括号加入到栈中去
                a.push(‘)‘);
            if (c == ‘[‘)
                a.push(‘]‘);
            if (c == ‘{‘)
                a.push(‘}‘);
            if (c == ‘)‘ || c == ‘]‘ || c == ‘}‘) { // 遇到结束的括号的时候进行判断
                if (a.size() == 0) // 就是栈中没有数据
                    return false; // 填空
                if (a.pop() != c) // 如果遇到的和弹出的不一致的话也就是出现重叠
                    return false;
            }
        }
        if (a.size() != 0) // 到最后栈中还有元素的话,也是属于不匹配的类型
            return false; // 填空
        return true;
    }

    public static void main(String[] args) {
        System.out.println(isGoodBracket("...(..[.)..].{.(..).}..."));
        System.out.println(isGoodBracket("...(..[...].(.).).{.(..).}..."));
        System.out.println(isGoodBracket(".....[...].(.).){.(..).}..."));
        System.out.println(isGoodBracket("...(..[...].(.).){.(..)...."));
    }
}

技术分享

Java算法-括号问题

标签:java算法   括号问题   

原文地址:http://blog.csdn.net/xlgen157387/article/details/44959973

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!