共计 833 个字符,预计需要花费 3 分钟才能阅读完成。
import java.util.Scanner;
/**
* 输入字符串s输出s中包含所有整数的最小和
* 说明:
* 字符串s只包含az,AZ,+,-,
* 合法的整数包括正整数,一个或者多个0-9组成,如:0,2,3,002,102
* 负整数,负号开头,数字部分由一个或者多个0-9组成,如-2,-012,-23,-00023
* 输入描述:
* 包含数字的字符串
* 输出描述:
* 所有整数的最小和
* 示例
* 输入:
* bb1234aa
* 输出:
* 10
* 输入:
* bb12-34aa
* 输出:
* -31
* 说明:
* 1+2-(34)=-31
*/
public class OD_Z_T_01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
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);
}
}
正文完
输出字符串中包含所有整数的最小和