没有括号的算式

有一个写在黑板上的加减法算式,运算符只包含加号、减号和括号,但其中的括号被清洁工擦去了。现在需要你写一个算法计算这个算式括号被擦去之前的可能的最小结果值。

输入:
仅有一行,被擦去括号后的算式

输入约束:
算式最多有50个字符,且其中仅包含0-9和+、-
算式的第一个字符一定是数字
算式中不会连续出现两个运算符
算式中每个整数最多有5位

输出:
一个整数:即括号被擦去之前,该算式可能的最小结果值

举例1:
输入:
55-50+40
输出:
-35
解释:
通过增加括号,该算式有两种可能的结果:55-50+40=45和55-(50+40)=-35

举例2:
输入:
10+20+30+40
输出:
100
解释:
由于输入中没有减号,因此无论怎么加括号,结果也只能是100

举例3:
输入:
00009-00009
输出:
0
解释:注意算式中的整数可能有前导0.

import java.util.Scanner;

public class ExpressionsWithoutBrackets {

    public static void main(String[] args) {
        /**
         * 有一个写在黑板上的加减法算式,运算符只包含加号、减号和括号,但其中的括号被清洁工擦去了。现在需要你写一个算法计算这个算式括号被擦去之前的可能的最小结果值。
         * 
         * 输入: 仅有一行,被擦去括号后的算式
         * 
         * 输入约束: 算式最多有50个字符,且其中仅包含0-9和+、- 算式的第一个字符一定是数字 算式中不会连续出现两个运算符 算式中每个整数最多有5位
         * 
         * 输出: 一个整数:即括号被擦去之前,该算式可能的最小结果值
         * 
         * 举例1: 输入: 55-50+40 输出: -35 解释: 通过增加括号,该算式有两种可能的结果:55-50+40=45和55-(50+40)=-35
         * 
         * 举例2: 输入: 10+20+30+40 输出: 100 解释: 由于输入中没有减号,因此无论怎么加括号,结果也只能是100
         * 
         * 举例3: 输入: 00009-00009 输出: 0 解释:注意算式中的整数可能有前导0.
         */
        Scanner scanner = new Scanner(System.in);
        String next = scanner.next();
        System.out.println(test(next));
        scanner.close();
    }

    static int test(String str) {
        String[] split = str.split("-");
        int n1 = 0, n2 = 0;
        String[] split1 = split[0].split("\\+");
        for (String s : split1) {
            n1 += Integer.valueOf(s);
        }
        for (int i = 1; i < split.length; i++) {
            String[] split2 = split[i].split("\\+");
            for (String s : split2) {
                n2 += Integer.valueOf(s);
            }
        }
        return n1 - n2;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值