Calculate sum of all numbers present in a string

Given a string containing alphanumeric characters, calculate sum of all numbers present in the string.

Examples:

Input:  1abc23
Output: 24

Input:  geeks4geeks
Output: 4

Input:  1abc2x30yz67
Output: 100

Input:  123abc
Output: 123

Difficulty level: Rookie



The only tricky part in this question is that multiple consecutive digits are considered as one number.

The idea is very simple. We scan each character of the input string and if a number is formed by consecutive characters of the string, we increment the result by that amount.

Below is its implementation –

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to calculate sum of all numbers present
// in a string containing alphanumeric characters
#include <iostream>
using namespace std;
  
// Function to calculate sum of all numbers present
// in a string containing alphanumeric characters
int findSum(string str)
{
    // A temporary string
    string temp = "";
  
    // holds sum of all numbers present in the string
    int sum = 0;
  
    // read each character in input string
    for (char ch: str)
    {
        // if current character is a digit
        if (isdigit(ch))
            temp += ch;
  
        // if current character is an alphabet
        else
        {
            // increment sum by number found earlier
            // (if any)
            sum += atoi(temp.c_str());
  
            // reset temporary string to empty
            temp = "";
        }
    }
  
    // atoi(temp.c_str()) takes care of trailing
    // numbers
    return sum + atoi(temp.c_str());
}
  
// Driver code
int main()
{
    // input alphanumeric string
    string str = "12abc20yz68";
  
    cout << findSum(str);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to calculate sum of all numbers present 
// in a string containing alphanumeric characters 
class GFG 
{
      
    // Function to calculate sum of all numbers present 
    // in a string containing alphanumeric characters 
    static int findSum(String str) 
    
        // A temporary string 
        String temp = ""
      
        // holds sum of all numbers present in the string 
        int sum = 0
      
        // read each character in input string 
        for(int i = 0; i < str.length(); i++) 
        
            char ch = str.charAt(i);
              
            // if current character is a digit 
            if (Character.isDigit(ch)) 
                temp += ch; 
      
            // if current character is an alphabet 
            else
            
                // increment sum by number found earlier 
                // (if any) 
                sum += Integer.parseInt(temp); 
      
                // reset temporary string to empty 
                temp = "0"
            
        
      
        // atoi(temp.c_str()) takes care of trailing 
        // numbers 
        return sum + Integer.parseInt(temp); 
    
      
    // Driver code 
    public static void main (String[] args)
    {
          
        // input alphanumeric string 
        String str = "12abc20yz68"
      
        System.out.println(findSum(str));
    }
}
  
// This code is contributed by AnkitRai01

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to calculate sum of 
# all numbers present in a str1ing 
# containing alphanumeric characters
  
# Function to calculate sum of all 
# numbers present in a str1ing 
# containing alphanumeric characters
def findSum(str1):
  
    # A temporary str1ing
    temp = ""
  
    # holds sum of all numbers 
    # present in the str1ing
    Sum = 0
  
    # read each character in input string
    for ch in str1:
  
        # if current character is a digit
        if (ch.isdigit()):
            temp += ch
  
        # if current character is an alphabet
        else:
              
            # increment Sum by number found 
            # earlier(if any)
            Sum += int(temp)
  
            # reset temporary str1ing to empty
            temp = "0"
          
    # atoi(temp.c_str1()) takes care 
    # of trailing numbers
    return Sum + int(temp)
  
# Driver code
  
# input alphanumeric str1ing
str1 = "12abc20yz68"
  
print(findSum(str1))
  
# This code is contributed
# by mohit kumar

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to calculate sum of 
// all numbers present in a string 
// containing alphanumeric characters 
using System;
      
class GFG 
{
      
    // Function to calculate sum of 
    // all numbers present in a string 
    // containing alphanumeric characters 
    static int findSum(String str) 
    
        // A temporary string 
        String temp = ""
      
        // holds sum of all numbers
        // present in the string 
        int sum = 0; 
      
        // read each character in input string 
        for(int i = 0; i < str.Length; i++) 
        
            char ch = str[i];
              
            // if current character is a digit 
            if (char.IsDigit(ch)) 
                temp += ch; 
      
            // if current character is an alphabet 
            else
            
                  
                // increment sum by number found earlier 
                // (if any) 
                sum += int.Parse(temp); 
      
                // reset temporary string to empty 
                temp = "0"
            
        
      
        // atoi(temp.c_str()) takes care of trailing 
        // numbers 
        return sum + int.Parse(temp); 
    
      
    // Driver code 
    public static void Main (String[] args)
    {
          
        // input alphanumeric string 
        String str = "12abc20yz68"
      
        Console.WriteLine(findSum(str));
    }
}
  
// This code is contributed by PrinciRaj1992 

chevron_right


Output:

100

Time complexity of above solution is O(n) where n is length of the string.

A Better Solution implementing Regex.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to calculate sum of 
# all numbers present in a str1ing 
# containing alphanumeric characters
  
# Function to calculate sum of all 
# numbers present in a str1ing 
# containing alphanumeric characters
import re
def find_sum(str1):
    # Regular Expression that matches digits in between a string
    return sum(map(int,re.findall('\d+',str1)))
  
# Driver code
  
# input alphanumeric str1ing
str1 = "12abc20yz68"
  
print(find_sum(str1))
  
# This code is contributed
# by Venkata Ramana B

chevron_right


Output:

100

This article is contributed by Aditya Goel. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up