- 华为OD机考题 + 答案
2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新)
- 面试题
一手真实java面试题:2023年各大公司java面试真题汇总--持续更新
- 技术知识
求字符串中所有整数的最小和
题目
说明
- 字符串 s,只包含
a-z``A-Z``+``-
;- 合法的整数包括 1) 正整数 一个或者多个
0-9
组成,如0 2 3 002 102
2)负整数 负号-
开头,数字部分由一个或者多个0-9
组成,如-0 -012 -23 -00023
输入
包含数字的字符串
输出
所有整数的最小和
测试用例:
bb12-34aa->-31
说明:1+2+(-34)
bb1234aa ->10
public class MinInteger {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String words = sc.nextLine();
int minInteger = find(words);
System.out.println(minInteger);
}
public static int find(String words){
int min = 0;
//负数值
Boolean negative = false;
StringBuffer sb = new StringBuffer();
//判断是否是整数,最小整数:每个正整数 + 最大负整数
for (int i = 0; i < words.length();i++){
if (Character.isDigit(words.charAt(i))){
//累计正整数值或负数值
if (!negative){
min+= Character.getNumericValue(words.charAt(i));
} else if (negative) {
sb.append(words.charAt(i));
}
} else if (String.valueOf(words.charAt(i)).equals("-")) {//判断是否开启负数值累计
negative = true;
} else if (negative){
negative = false;//结束,累加负数值
min-= Integer.valueOf(sb.toString());
sb.setLength(0);
}
}
//字符串尾数是负数值
if (negative){
min-= Integer.valueOf(sb.toString());
}
return min;
}
}