要求
1、 忽略小数点 如 A1.3 包含的是两个数字 1 和 3
2、紧贴数字子串的左侧出现字符“-” 连续次数为奇数时候 为负数 , 偶数时候为正数。
比如: “A-1BC--12” 其中包含数字为-1 和 12
str="A1CD2E33" 返回36
str="A-1B-2C--D6E" 返回7
这个题目的实现方法有很多种,下面我来给大家演示一种哈~~~~~
这个题目就是实现 如何从左到右遍历str时,准确收集每个数字并累加起来
实现步骤:
三个变量 int res 表示目前的累加和
int num 表示当前收集到的数字
boolean posi 表示如果把num累加到res里, num是正还是负
package TT; public class test2 { public static int numSum(String str){ if(str==null){ return 0; } char[] charArr = str.toCharArray(); int res = 0; int num =0; boolean posi = true; int cur = 0; for(int i =0; i<charArr.length; i++){ cur = charArr[i]-‘0‘; if(cur<0 || cur>9){ res+=num; num = 0; if(charArr[i]==‘-‘){ if(i-1>-1 && charArr[i-1]==‘-‘){ posi=!posi; }else{ posi = true; } } }else{ num = num * 10 + (posi ? cur : -cur); } } res += num; return res; } public static void main(String[] args){ String str ="A1CD2E33"; int a = numSum(str); System.out.println(a); } }
结果:36
时间: 2024-10-13 13:40:32