题目描述
输入字符串 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);
}