I was trying to get around the below problem in codingBat for Java: http://codingbat.com/prob/p121193
Given a string, return the sum of the numbers appearing in the string, ignoring all other characters. A number is a series of 1 or more digit chars in a row. (Note: Character.isDigit(char) tests if a char is one of the chars '0', '1', .. '9'. Integer.parseInt(string) converts a string to an int.) sumNumbers("abc123xyz") → 123 sumNumbers("aa11b33") → 44 sumNumbers("7 11") → 18
Below is my solution
public int sumNumbers(String str) {
final int len=str.length();
int[] numbers=new int[len];
int count=0;
String temp="";
int sum=0;
for(int i=0;i<len;i++)
{
if(Character.isDigit(str.charAt(i)))
{
temp=temp+str.substring(i, i+1);
if(i==len-1)
{
numbers[count]=Integer.parseInt(temp);
break;
}
if(Character.isDigit(str.charAt(i+1)))
{
continue;
}
else
{
numbers[count]=Integer.parseInt(temp);
count++;
temp="";
}
}
}
for(int j=0;j<numbers.length;j++)
{
sum=sum+numbers[j];
}
return sum;
}
It's a simple problem please provide any alternative efficient answers using regex or anyway other PLEASE DO NOT USE ANYTHING FROM COLLECTIONS FRAMEWORK.