*LeetCode-Different Ways to Add Parentheses

来源:互联网 发布:成功的网络大电影 编辑:程序博客网 时间:2024/06/06 18:55

不用考虑括号不括号的问题 想成了stack就错了 应该用分治递归

每次遇到一个运算符就把string两边分开分别递归计算 得到两个list 然后这两个list里面的结果根据这个符号排列组合计算

最后corner case是不存在括号 即list为空 直接把string add进去

public class Solution {    public List<Integer> diffWaysToCompute(String input) {        List<Integer> list = new ArrayList<Integer> ();        if ( input == null || input.length() == 0 )            return list;        for ( int i = 0; i < input.length(); i ++ ){            if ( input.charAt(i) == '+' || input.charAt(i) == '-' || input.charAt(i) == '*' ){                List<Integer> l1 = diffWaysToCompute( input.substring( 0, i ) );                List<Integer> l2 = diffWaysToCompute( input.substring( i + 1 ) );                for ( int num1 : l1 ){                    for ( int num2 : l2 ){                        int res = 0;                        if ( input.charAt(i) == '+' )                            res = num1 + num2;                        else if ( input.charAt(i) == '-')                            res = num1 - num2;                        else                             res = num1 * num2;                        list.add ( res );                    }                }            }        }        if ( list.size () == 0 )            list.add ( Integer.parseInt(input) );        return list;    }}


0 0
原创粉丝点击