java实现求字符串中所有整数的最小和
描述
输入字符串s,输出s中包含所有整数的最小和。
说明:
字符串s,只包含 a-zA-Z±。
合法的整数包括:
1 )正整数 一个或者多个0-9组成,如 02 3 002 102;
2)负整数 负号-开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023;
输入描述:
包含数字的字符串
输出描述
所有整数的最小和
例如:
输入:bb1234aa
输出:10
输入:bb12-34aa
输出:-31
输入:bb12-34aa34f-24
输出:-48
java实现(开箱即用)
package com.des.data.test;
import jodd.util.StringUtil;
import java.util.ArrayList;
import java.util.List;
public class MinimumSumAllIntegersInString {
public static void main(String[] args) {
String str1 = "bb1234aa";
String strf = "bb12-34aa";
String strg = "bb12-34aa34f-24";
System.out.println(sum(strg));
}
public static String sum(String sf) {
if (StringUtil.isBlank(sf)) {
return null;
}
List<Long> digArray = new ArrayList<>();
Long sum = 0L;
if (!sf.contains("-")) {
for (int i = 0; i < sf.length(); i++) {
char c = sf.charAt(i);
if (isdig(c)) {
String digo = String.valueOf(c);
sum = sum + Long.parseLong(digo);
}
}
return sum + "";
} else {
int start = 0;
int end = 0;
for (int i = 0; i < sf.length(); i++) {
char c = sf.charAt(i);
if (start == 0 && end == 0) {
if (isdig(c)) {
String digo = String.valueOf(c);
sum = sum + Long.parseLong(digo);
}
}
if (c == '-') {
start = i + 1;
StringBuffer digl = new StringBuffer();
digl.append("-");
for (int j = i + 1; j < sf.length(); j++) {
if (isdig(sf.charAt(j))) {
digl.append(sf.charAt(j));
} else {
end = j - 1;
break;
}
}
sum = sum + Long.parseLong(digl.toString());
}
if (end == i) {
start = 0;
end = 0;
}
}
}
return sum + "";
}
public static boolean isdig(char c) {
if (Character.isDigit(c)) {
return true;
}
return false;
}
}