【问题标题】:Write java program to sum of all integers from a random String编写java程序来对随机字符串中的所有整数求和
【发布时间】:2015-01-30 04:33:48
【问题描述】:

最近面试被问到这个问题(Java编程题)

  • 从随机字符串中返回所有整数的总和。连续整数必须被视为一个数字。
  • 如果输入字符串没有整数,则返回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;
}

【问题讨论】:

  • 您似乎已将您的代码通过文字处理器,将您的单引号更改为卷曲的 unicode 怪异。此外,您的缩进完全搞砸了。
  • 我投票结束这个问题,因为它是一个代码审查,属于 codereview.stackexchange.com

标签: java


【解决方案1】:

使用正则表达式:

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

【讨论】:

  • 谢谢!这真的很有帮助。我在正则表达式上工作不多。现在是我学习的时候了!
猜你喜欢
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
相关资源
最近更新 更多