将java程序写入随机String中所有整数的总和

时间:2015-01-29 20:29:21

标签: java

我最近在一次采访中被问到这个问题(Java编程阙)

  • 从随机字符串返回所有整数的总和。连续整数必须被视为一个数字。
  • 如果输入String没有任何整数,则返回0.
  • 您可以忽略小数,浮点数和其他非整数数字
  • @param str:输入字符串
    • 鉴于以下输入,我们期望相应的输出:
  • “ -​​ 1a2b3c”=> 4(-1 + 2 + 3)
  • “123ab!45c”=> 168(123 + 45)
  • “abcdef”=> 0(字符串中没有整数)
  • “0123.4”=> 127(0123 + 4)
  • “dFD $#+ 23 +++ 12 @#T1234; /。,10”=> 1279(23 + 12 + 1234 + 10)

我被允许使用任何内置函数

我写了这段代码,但这似乎有点复杂。这段代码可以用其他方式完成吗?

public int convertString(String str){
int num=0, currNo = 0;
Boolean isNegative = false;

for (int i=0 ; i<str.length(); i++){
Char t = str.charAt(i) ;

    if(t == ‘-‘){
       if(isNegative)
            num = num-currNo;
        else
            num = num + currNo;

       isNegative=true;
       currNo=0;
    }
    else if(((t-‘0’) <= 9 && (t-‘0’)>=0)){
        currNo = (currNo*10) + t;
    }
    else {

            if(isNegative)
            num = num-currNo;
        else
            num = num + currNo;

        currNo=0;
        isNegative=false;
    }
}


if(isNegative)
            num = num-currNo;
        else
            num = num + currNo;                         
isNegative=true;

return num;
}

1 个答案:

答案 0 :(得分:8)

使用正则表达式:

Matcher m = Pattern.compile("-?\\d+").matcher(str);
long sum = 0;
while(m.find()) {
    sum += Integer.parseInt(m.group());
}