要求:
1、时间复杂度O(N)
2、空间复杂度O(1)
3、若有负号‘-’也要算,两个负号算正,小数点不算。
难度不大,我就不考虑正负了,考虑正负就是判断连续遇到的负号个数,奇数为负,偶数为正
package algorithm_database;
public class String_SumInt {
public static void main(String[] args){
String a = "as34asdf44asdf2adf112ad100000";
System.out.println(sumStringInt(a));
}
public static int sumStringInt(String str){
if(str == null){
return 0;
}
char[] charArr = str.toCharArray();
int res = 0; //总和
int num = 0;
int cur = 0;
for(int i=0;i<charArr.length;i++){
cur = charArr[i]-'0';
if(cur<0 || cur>9){
res+=num;
num=0;
} else {
num = num*10+cur;
}
}
res+=num;
return res;
}
}