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 the implementation of the above idea:
C++
// 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" ; // Function call cout << findSum(str); return 0; } |
Java
// 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 = "0" ; // 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" ; // Function call System.out.println(findSum(str)); } } // This code is contributed by AnkitRai01 |
Python3
# 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 = "0" # 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" # Function call print (findSum(str1)) # This code is contributed # by mohit kumar |
C#
// 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 = "0" ; // 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" ; // Function call Console.WriteLine(findSum(str)); } } // This code is contributed by PrinciRaj1992 |
100
Time complexity: O(n) where n is length of the string.
A Better Solution implementing Regex.
Python3
# 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" # Function call print (find_sum(str1)) # This code is contributed # by Venkata Ramana B |
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.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.