Java Stack布尔输出自定义?

时间:2016-04-23 01:09:29

标签: java stack boolean

所以我所拥有的是这个稍微修改过的代码版本,对于Java Stack Balancing来说是一百次。

import java.util.Stack;

public class Main {

public static String testContent = "{(a,b)}";

public static void main(String args[])
{

    System.out.println(balancedParentheses(testContent));
}

public static boolean balancedParentheses(String s)
{
    Stack<Character> stack  = new Stack<Character>();
    for(int i = 0; i < s.length(); i++)
    {
        char c = s.charAt(i);
        if(c == '[' || c == '(' || c == '{' )
        {
            stack.push(c); 
        }else if(c == ']')
        {
            if(stack.isEmpty()) return false;
            if(stack.pop() != '[') return false;

        }else if(c == ')')
        {
            if(stack.isEmpty()) return false;
            if(stack.pop() != '(') return false;

        }else if(c == '}')
        {
            if(stack.isEmpty()) return false;
            if(stack.pop() != '{') return false;
        }

    }
    return stack.isEmpty(); 
}
}

我想要做的是自定义输出,使其输出类似“平衡”或“不平衡”的内容而不是真/假。试图替换return false;使用包含'balanced'的System.println给了我很多我不想要的输出行。一直在这里搜索大约一个小时和一些变化,并没有找到我正在寻找的答案。有什么见解吗?

1 个答案:

答案 0 :(得分:1)

您可以使用类似

的内容

System.out.println(balancedParentheses(testContent) ? "balanced" : "imbalanced");

或者如果你想要一个返回String的方法用另一个方法包装逻辑

String isBalanced(String expression) {
    return balancedParentheses(expression) ? "balanced" : "imbalanced"
}

并在main()

System.out.println(isBalanced(testContent));

你可以编写像这样的代码

public static boolean balancedParentheses(String s) {
    Stack<Character> stack = new Stack<Character>();
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (c == '[' || c == '(' || c == '{') {
            stack.push(c);
        } else if (c == ']' || c == ')' || c == '}') {
            if (stack.isEmpty() || !matches(stack.pop(), c))
                return false;
        } 
    }
    return stack.isEmpty();
}

private static boolean matches(char opening, char closing) {
    return opening == '{' && closing == '}' ||
            opening == '(' && closing == ')' ||
            opening == '[' && closing == ']';
}