Calculate sum of all numbers present in a string
Last Updated :
20 Mar, 2023
Given a string S containing alphanumeric characters, The task is to calculate the sum of all numbers present in the string.
Examples:
Input: 1abc23
Output: 24
Explanation: 1 + 23 = 24
Input: geeks4geeks
Output: 4
Input: 1abc2x30yz67
Output: 100
Approach:
Scan each character of the input string and if a number is formed by consecutive characters of the string, then increment the result by that amount. The only tricky part of this question is that multiple consecutive digits are considered one number.
Follow the below steps to implement the idea:
- Create an empty string temp and an integer sum.
- Iterate over all characters of the string.
- If the character is a numeric digit add it to temp.
- Else convert temp string to number and add it to sum, empty temp.
- Return sum + number obtained from temp.
Below is the implementation of the above approach:
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
import java.io.*;
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 string
# containing alphanumeric characters
# Function to calculate sum of all
# numbers present in a string
# containing alphanumeric characters
def findSum(str1):
# A temporary string
temp = "0"
# holds sum of all numbers
# present in the string
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 string to empty
temp = "0"
# atoi(temp.c_str1()) takes care
# of trailing numbers
return Sum + int(temp)
# Driver code
# input alphanumeric string
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
JavaScript
<script>
// Javascript program to calculate
// sum of all numbers present
// in a string containing
// alphanumeric characters
// Function to calculate sum
// of all numbers present
// in a string containing
// alphanumeric characters
function findSum(str)
{
// A temporary string
let temp = "0";
// holds sum of all numbers
// present in the string
let sum = 0;
// read each character in input string
for (let i = 0; i < str.length; i++) {
let ch = str[i];
// if current character is a digit
if (!isNaN(String(ch) * 1))
temp += ch;
// if current character is an alphabet
else {
// increment sum by number found earlier
// (if any)
sum += parseInt(temp);
// reset temporary string to empty
temp = "0";
}
}
// atoi(temp.c_str()) takes care of trailing
// numbers
return sum + parseInt(temp);
}
// Driver code
// input alphanumeric string
let str = "12abc20yz68";
// Function call
document.write(findSum(str));
// This code is contributed by unknown2108
</script>
Time complexity: O(N) where n is length of the string.
Auxiliary Space: O(N) where n is length of the string.
Calculate sum of all numbers present in a string using recursion
The idea is to recursively traverse over the string and find out the numbers then add these numbers to the result, at last return the result.
Follow the below steps to implement the idea:
- Create an empty string temp and an integer sum.
- Recursively traverse the characters for every index i from 0 to length - 1.
- If i = N-1 then check if current character is a digit return str[i] - '0'.
- Else return 0.
- If str[i] is a digit.
- Run a for loop with counter j from i to N - 1.
- If the character is a numeric digit add it to temp.
- Else break.
- Return sum of numeric value of temp + recur for index j.
Below is the implementation of the above approach:
C++
// C++ program to calculate sum of all numbers
// present in a string containing alphanumeric
// characters
#include <iostream>
using namespace std;
int solve(string& str, int i, int n)
{
// if string is empty
if (i >= n)
return 0;
// if on the last index
if (i == n - 1) {
// if last digit is numeric
if (isdigit(str[i])) {
return str[i] - '0';
}
else {
return 0;
}
}
// if current char is digit
// then sum the consecutive digits
if (isdigit(str[i])) {
// declared an empty string
string temp = "";
int j;
// start from that index
// sum all the consecutive digits
for (j = i; j < n; j++) {
// if current char is digit
// add it to the temp string
if (isdigit(str[j]))
temp += str[j];
// if it is not a digit
// break instantly
else
break;
}
// add the number associated to temp
// with the answer recursion will bring
return stoi(temp) + solve(str, j, n);
}
// else call from the next index
else {
solve(str, i + 1, n);
}
}
int findSum(string str)
{
// recursiven function
return solve(str, 0, str.size());
}
// Driver code
int main()
{
// input alphanumeric string
string str = "12abc20yz68";
// Function call
cout << findSum(str);
return 0;
}
Java
import java.util.Scanner;
class Main {
static int solve(String str, int i, int n) {
// if string is empty
if (i >= n)
return 0;
// if on the last index
if (i == n - 1) {
// if last digit is numeric
if (Character.isDigit(str.charAt(i))) {
return str.charAt(i) - '0';
}
else {
return 0;
}
}
// if current char is digit
// then sum the consecutive digits
if (Character.isDigit(str.charAt(i))) {
// declared an empty string
String temp = "";
int j;
// start from that index
// sum all the consecutive digits
for (j = i; j < n; j++) {
// if current char is digit
// add it to the temp string
if (Character.isDigit(str.charAt(j)))
temp += str.charAt(j);
// if it is not a digit
// break instantly
else
break;
}
// add the number associated to temp
// with the answer recursion will bring
return Integer.parseInt(temp) + solve(str, j, n);
}
// else call from the next index
else {
return solve(str, i + 1, n);
}
}
static int findSum(String str) {
// recursiven function
return solve(str, 0, str.length());
}
// Driver code
public static void main(String[] args) {
// input alphanumeric string
String str = "12abc20yz68";
// Function call
System.out.println(findSum(str));
}
}
// This code contributed by Ajax
Python3
def findSum(str):
# variable to store sum
result = 0
temp = ""
for i in range(len(str)):
if str[i].isnumeric():
temp += str[i]
if i == len(str) - 1:
result += int(temp)
else:
if temp != "":
result += int(temp)
temp = ""
return result
# driver code
if __name__ == "__main__":
# input alphanumeric string
str = "12abc20yz68"
print(findSum(str))
#This code contributed by Shivam Tiwari
C#
// C# program to calculate sum of all numbers
// present in a string containing alphanumeric
// characters
using System;
using System.Linq;
using System.Collections.Generic;
class GFG
{
static bool isdigit(char c)
{
if(c>='0' && c<='9')
return true;
return false;
}
static int solve(string str, int i, int n)
{
// if string is empty
if (i >= n)
return 0;
// if on the last index
if (i == n - 1) {
// if last digit is numeric
if (isdigit(str[i])) {
return str[i];
}
else {
return 0;
}
}
// if current char is digit
// then sum the consecutive digits
if (isdigit(str[i])) {
// declared an empty string
string temp = "";
int j;
// start from that index
// sum all the consecutive digits
for (j = i; j < n; j++) {
// if current char is digit
// add it to the temp string
if (isdigit(str[j]))
temp += str[j];
// if it is not a digit
// break instantly
else
break;
}
// add the number associated to temp
// with the answer recursion will bring
return Int32.Parse(temp) + solve(str, j, n);
}
// else call from the next index
else {
return solve(str, i + 1, n);
}
}
static int findSum(string str)
{
// recursiven function
return solve(str, 0, str.Length);
}
// Driver code
static public void Main()
{
// input alphanumeric string
string str = "12abc20yz68";
// Function call
Console.Write(findSum(str));
}
}
JavaScript
function findSum(str) {
// variable to store sum
let result = 0;
let temp = "";
for (let i = 0; i < str.length; i++) {
if (!isNaN(str[i])) {
temp += str[i];
if (i === str.length - 1) {
result += parseInt(temp);
}
} else {
if (temp !== "") {
result += parseInt(temp);
temp = "";
}
}
}
return result;
}
// driver code
console.log(findSum("12abc20yz68"));
// This code is contributed by Shivam Tiwari
Time Complexity: O(N), where N is the size of the given string.
Auxiliary Space: O(N), in worst case it can cost O(N) recursive calls
Calculate sum of all numbers present in a string using Regex in Python:
The idea is to use inbuilt function Python RegEx.
Below is the Implementation of above approach:
C++14
#include <iostream>
#include <regex>
// Function to calculate sum of all
// numbers present in a string
// containing alphanumeric characters
int findSum(std::string str) {
// Regular Expression that matches
// digits in between a string
std::regex pattern("\\d+");
std::smatch match;
int sum = 0;
while (std::regex_search(str, match, pattern)) {
sum += stoi(match[0].str());
str = match.suffix().str();
}
return sum;
}
// Driver code
int main() {
// input alphanumeric string
std::string str = "12abc20yz68";
// Function call
std::cout << findSum(str) << std::endl;
return 0;
}
// This code is contributed by Shivam Tiwari
Python3
# Python3 program to calculate sum of
# all numbers present in a string
# containing alphanumeric characters
# Function to calculate sum of all
# numbers present in a string
# 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 string
str1 = "12abc20yz68"
# Function call
print(find_sum(str1))
# This code is contributed
# by Venkata Ramana B
JavaScript
// JavaScript program to calculate sum of
// all numbers present in a string
// containing alphanumeric characters
// Function to calculate sum of all
// numbers present in a string
// containing alphanumeric characters
function find_sum(str1) {
// Regular Expression that matches
// digits in between a string
return str1.match(/\d+/g).reduce((acc, val) => acc + parseInt(val), 0);
}
// Driver code
// input alphanumeric string
const str1 = "12abc20yz68";
// Function call
console.log(find_sum(str1));
Java
import java.util.regex.*;
public class Main {
// Function to calculate sum of all
// numbers present in a string
// containing alphanumeric characters
public static int findSum(String str)
{
// Regular Expression that matches
// digits in between a string
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(str);
int sum = 0;
while (matcher.find()) {
sum += Integer.parseInt(matcher.group());
str = matcher.replaceFirst("");
matcher = pattern.matcher(str);
}
return sum;
}
// Driver code
public static void main(String[] args)
{
// input alphanumeric string
String str = "12abc20yz68";
// Function call
System.out.println(findSum(str));
}
}
C#
using System;
using System.Text.RegularExpressions;
public class GFG
{
// Function to calculate sum of all
// numbers present in a string
// containing alphanumeric characters
public static int FindSum(string str)
{
// Regular Expression that matches
// digits in between a string
Regex pattern = new Regex(@"\d+");
Match matcher = pattern.Match(str);
int sum = 0;
while (matcher.Success)
{
sum += Int32.Parse(matcher.Value);
str = pattern.Replace(str, "", 1, matcher.Index);
matcher = pattern.Match(str);
}
return sum;
}
// Main method
static public void Main()
{
// input alphanumeric string
string str = "12abc20yz68";
// Function call
Console.WriteLine(FindSum(str));
}
}
Time complexity: O(n) where n is length of the string.
Auxiliary Space: O(n) where n is length of the string.
Similar Reads
Sum of numbers formed by consecutive digits present in a given string
Given a string S consisting of digits [0 - 9] and lowercase alphabets, the task is to calculate the sum of all numbers represented by continuous sequences of digits present in the string S. Examples: Input: S = "11aa32bbb5"Output: 48Explanation: The consecutive sequence of numbers present in the str
5 min read
Count number of equal pairs in a string
Given a string s, find the number of pairs of characters that are same. Pairs (s[i], s[j]), (s[j], s[i]), (s[i], s[i]), (s[j], s[j]) should be considered different. Examples : Input: airOutput: 3Explanation :3 pairs that are equal are (a, a), (i, i) and (r, r)Input : geeksforgeeksOutput : 31Recommen
8 min read
Print all substring of a number without any conversion
Given an integer N, the task is to print all the substring of N without doing any conversion i.e converting it into a string or an array. Examples: Input: N = 12345 Output: Possible Substrings: {1, 12, 123, 1234, 12345, 2, 23, 234, 2345, 3, 34, 345, 4, 45, 5}Input: N = 123 Output: Possible Substring
5 min read
Sum of all prefixes of given numeric string
Given string str having N characters representing an integer, the task is to calculate the sum of all possible prefixes of the given string. Example: Input: str = "1225"Output: 1360Explanation: The prefixes of the given string are 1, 12, 122, and 1225 and their sum will be 1 + 12 + 122 + 1225 = 1360
8 min read
Sum of all substrings of a string representing a number | Set 1
Given an integer represented as a string, we need to get the sum of all possible substrings of this string Examples: Input: num = â1234âOutput: 1670Explanation: Sum = 1 + 2 + 3 + 4 + 12 + 23 +34 + 123 + 234 + 1234 = 1670 Input: num = â421âOutput: 491Explanation: Sum = 4 + 2 + 1 + 42 + 21 + 421 = 491
11 min read
Consecutive sequenced numbers in a string
Given a string s that contains only numeric digits, we need to check whether that strings contains numbers in a consecutive sequential manner in increasing order. If the string contains a valid sequence of consecutive integers, print "Yes" followed by the starting number of the sequence. Otherwise,
6 min read
Count of camel case characters present in a given string
Given a string S, the task is to count the number of camel case characters present in the given string. The camel case character is defined as the number of uppercase characters in the given string. Examples: Input: S = "ckjkUUYII"Output: 5Explanation: Camel case characters present are U, U, Y, I an
7 min read
Count the sum of count of distinct characters present in all Substrings
Given a string S consisting of lowercase English letters of size N where (1 <= N <= 105), the task is to print the sum of the count of distinct characters N where (1 <= N <= 105)in all the substrings. Examples: Input: str = "abbca"Output: 28Explanation: The following are the substrings o
8 min read
Count of numbers with all digits same in a given range
Given two integers L and R denoting the starting and end values of a range, the task is to count all numbers in that range whose all digit are same, like 1, 22, 444, 3333, etc.Example: Input: L = 12, R = 68 Output: 5 Explanation: { 22, 33, 44, 55, 66} are the numbers with same digits in the given ra
10 min read
Sum of all substrings of a string representing a number | Set 2 (Constant Extra Space)
Given a string representing a number, we need to get the sum of all possible sub strings of this string. Examples : Input : s = "6759" Output : 8421 sum = 6 + 7 + 5 + 9 + 67 + 75 + 59 + 675 + 759 + 6759 = 8421 Input : s = "16" Output : 23 sum = 1 + 6 + 16 = 23Recommended PracticeSum of all substring
7 min read