取字符串的所有整数最小和-华为OD

题目描述

输入字符串 s,输出 s 中包含所有整数的最小和

说明:

字符串 s,只包含 a-z A-Z ± ;
合法的整数包括:
1) 正整数 一个或者多个 0-9 组成,如 0 2 3 002 102
2)负整数 负号 - 开头,数字部分由一个或者多个 0-9 组成

输入描述

包含数字的字符串

输出描述

所有整数的最小和

示例1
bb1234aa
10
示例2
bb12-34aa
-31
public static void main(String[] args) {
        //Scanner scanner = new Scanner(System.in);
        String line = "bb12-3-4aa";
        char[] chars = (line + "+").toCharArray();

        boolean flag = false; // 定义一个标记,是否是‘-’后面的数字,如果是的话就把数字串起来最大
        StringBuilder sb = new StringBuilder(); // 用来拼接负数字符
        int sum_min = 0;
        for (char aChar : chars) {
            if (Character.isDigit(aChar)) { //判断是否为数字
                if (flag) {
                    sb.append(aChar); // 如果负数就先拼接
                } else {
                    sum_min += aChar - 48; // 其他符号后面的直接计算,才能得到最小正数
                }

                continue;
            }

            if (flag && sb.length() != 0) { // 把前面拼接好的字符串计算出来,并且置空
                sum_min -= Integer.parseInt(sb.toString());
                sb.setLength(0);
            }

            flag = aChar == '-'; // 遇到负号改变标记
        }

        System.out.println(sum_min);
    }

你可能感兴趣的:(java,java,开发语言)