公式加括号的所有可能

如果一个字符串形式的公式,只包含+,-,*和数字。然后以数组形式返回加上括号后所有可能的结果。例如“2-1-1”则有可能输出2-1-1 = 0;2-(1-1)=2;所以返回[0,2]。

 

思路:

左右子串分别计算所有可能,然后全排列。


代码:

 

public classSolution {

    public List<Integer>diffWaysToCompute(String input) {

        List<Integer> result = newArrayList<Integer>();

        for(int i = 0;i <input.length();i++){

            if(input.charAt(i) == '+' ||input.charAt(i) == '-' || input.charAt(i) == '*'){

                List<Integer> left =diffWaysToCompute(input.substring(0,i));

                List<Integer> right =diffWaysToCompute(input.substring(i+1));

               

                for(int j : left){

                    for(int k : right){

                        if(input.charAt(i) =='+'){

                            result.add(j + k);

                        }elseif(input.charAt(i) == '-'){

                            result.add(j - k);

                        }elseif(input.charAt(i) == '*'){

                            result.add(j * k);

                        }

                    }

                }

            }

        }

        if(result.isEmpty()){

            result.add(Integer.valueOf(input));

        }

        return result;

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值