首页 > 编程语言 > 详细

java 实例 判断输出的括号是否成对出现

时间:2017-03-16 22:14:19      阅读:287      评论:0      收藏:0      [点我收藏+]

输入:

{}()
({()})
{}(
[]

输出:

true
true
false
true

代码:

import java.util.Scanner;
import java.util.Stack;
import java.util.HashMap;

class Solution {
    
    public static void main(String[] args) {
        /* Create HashMap to match opening & closing brackets */
        HashMap<Character, Character> map = new HashMap<>();
        map.put(‘(‘, ‘)‘);
        map.put(‘[‘, ‘]‘);
        map.put(‘{‘, ‘}‘);
        
        /* Test each expression for validity */
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            String expression = scan.next();
            System.out.println(isBalanced(expression, map) ? "true" : "false" );
        }
        scan.close();
    }
    
    public static boolean isBalanced(String expression, HashMap<Character, Character> map) {
        /* Odd length strings are not balanced */
        if ((expression.length() % 2) != 0) {
            return false;
        }
        
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < expression.length(); i++) {
            Character ch = expression.charAt(i);
            if (map.containsKey(ch)) {
                stack.push(ch);
            } else if (stack.isEmpty() || ch != map.get(stack.pop())) {
                return false;
            }
        }
        return stack.isEmpty();
    }
}

 

java 实例 判断输出的括号是否成对出现

原文:http://www.cnblogs.com/Angella/p/6561640.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!