求字符串中所有整数的最小和
题目
说明
字符串 s,只包含 a-z A-Z + - ;
合法的整数包括
1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102
2)负整数 负号 - 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023
输入
包含数字的字符串
输出
所有整数的最小和
示例一
输入
bb1234aa
1
输出
10
1
示例二
输入
bb12-34aa
1
输出
-31
1
说明
1+2+(-34) = 31
package com.tarena.test.B10;
import java.math.BigInteger;
import java.util.Scanner;
/**
求字符串中所有整数的最小和
题目
说明
字符串 s,只包含 a-z A-Z + - ;
合法的整数包括
1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102
2)负整数 负号 - 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023
输入
包含数字的字符串
输出
所有整数的最小和
示例一
输入
bb1234aa
输出
10
示例二
输入
bb12-34aa
输出
-31
说明
1+2+(-34) = 31
* @author Administrator
*
*/
public class B14 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try(Scanner sc = new Scanner(System.in)){
String str = sc.nextLine();
System.out.println(resultInt(str));
}
}
public static Integer resultInt(String str){
char[] arr = str.toCharArray();
BigInteger sum = new BigInteger("0");
StringBuilder intStr = new StringBuilder();
for(int i=0;i<arr.length;i++) {
char c = arr[i];
if('-'==c) {
intStr.append(c);
}else if(c>='0'&&c<='9'){
if(intStr.length()>0) {
intStr.append(c);
}else {
sum=sum.add(new BigInteger(String.valueOf(c)));
}
}else {
if(intStr.length()>0) {
sum=sum.add(new BigInteger(String.valueOf(intStr)));
intStr.delete(0, intStr.length());
}
}
}
return sum.intValue();
}
}
了解知识点
1、BigInteger,Big相关类的使用 .add后会生成一个新的Big类,需要 sum=sum.add()后才能获取算法结果
2、char类型 比较c>='0'&&c<='9'