Social Icons

Thursday, May 13, 2010

sumNumbers : Solutions for Javabat : 19


Question:

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

Source

Solution
For each digit we find using isDigit() on the passed string , we have to check adjacent characters whether they are digits too. isDigit() is a life saver i must confess.

public int sumNumbers(String s) {
   int sum=0;
   String num="";
   
   if(str.length()==0) return 0;
  
   for(int i=0 ; i<s.length(); i++){
     if(Character.isDigit(s.charAt(i) ) ){
        num=""+s.charAt(i);
        i++;
        while(i<s.length() && Character.isDigit(s.charAt(i)) ){
             num+=""+s.charAt(i);    
             i++;        
        }
        sum+=Integer.parseInt(num);
     }
  }  
  return sum;
}


 
 
 
Blogger Templates http://slots.to/