Skip to content
Related Articles

Related Articles

Sum of numbers formed by consecutive digits present in a given string
  • Last Updated : 08 Mar, 2021

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: 48
Explanation: 
The consecutive sequence of numbers present in the string S are {11, 32, 5}.
Therefore, sum = 11 + 32 + 5 = 48

Input: s = “5an63ff2”
Output: 70

Approach: Follow the steps below to solve the problem:



  • Initialize a variable, say curr, to store the current sequence of consecutive digits
  • Iterate over the characters of the string.
  • If the current character is not a digit, add the current value of curr to the final answer. Reset curr to 0.
  • Otherwise, append the current digit to curr.
  • Finally, return the final answer.

Below is the implementation of the above approach:

C++




// C++ Program to implement
// the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to calculate the sum of
// numbers formed by consecutive
// sequences of digits present in the string
int sumOfDigits(string s)
{
    // Stores consecutive digits
    // present in the string
    int curr = 0;
 
    // Stores the sum
    int ret = 0;
 
    // Iterate over characters
    // of the input string
    for (auto& ch : s) {
 
        // If current character is a digit
        if (isdigit(ch)) {
 
            // Append current digit to curr
            curr = curr * 10 + ch - '0';
        }
        else {
 
            // Add curr to sum
            ret += curr;
 
            // Reset curr
            curr = 0;
        }
    }
 
    ret += curr;
    return ret;
}
 
// Driver Code
int main()
{
    string S = "11aa32bbb5";
    cout << sumOfDigits(S);
    return 0;
}

Java




// Java program to implement
// the above approach
import java.io.*;
import java.util.*;
class GFG
{
 
  // Function to calculate the sum of
  // numbers formed by consecutive
  // sequences of digits present in the string
  static int sumOfDigits(String s)
  {
 
    // Stores consecutive digits
    // present in the string
    int curr = 0;
 
    // Stores the sum
    int ret = 0;
 
    // Iterate over characters
    // of the input string
    for(char ch : s.toCharArray())
    {
 
      // If current character is a digit
      if (ch >= 48 && ch <= 57)
      {
 
        // Append current digit to curr
        curr = curr * 10 + ch - '0';
      }
      else
      {
 
        // Add curr to sum
        ret += curr;
 
        // Reset curr
        curr = 0;
      }
    }
    ret += curr;
    return ret;
  }
 
  // Driver Code
  public static void main(String[] args)
  {
    String S = "11aa32bbb5";
    System.out.print(sumOfDigits(S));
  }
}
 
// This code is contributed by splevel62.

Python3




# Python3 program for the above approach
 
# Function to calculate the sum of
# numbers formed by consecutive
# sequences of digits present in the string
def sumOfDigits(s) :
     
    # Stores consecutive digits
    # present in the string
    curr = 0
 
    # Stores the sum
    ret = 0
 
    # Iterate over characters
    # of the input string
    for ch in s :
 
        # If current character is a digit
        if (ord(ch) >= 48 and ord(ch) <= 57) :
 
            # Append current digit to curr
            curr = curr * 10 + ord(ch) - ord('0')
         
        else :
 
            # Add curr to sum
            ret += curr
 
            # Reset curr
            curr = 0
 
    ret += curr
    return ret
 
# Driver Code
 
S = "11aa32bbb5"
print(sumOfDigits(S))
 
# This code is contributed by code_hunt.

C#




// C# Program to implement
// the above approach
using System;
class GFG
{
     
    // Function to calculate the sum of
    // numbers formed by consecutive
    // sequences of digits present in the string
    static int sumOfDigits(string s)
    {
       
        // Stores consecutive digits
        // present in the string
        int curr = 0;
       
        // Stores the sum
        int ret = 0;
       
        // Iterate over characters
        // of the input string
        foreach(char ch in s)
        {
       
            // If current character is a digit
            if (ch >= 48 && ch <= 57)
            {
       
                // Append current digit to curr
                curr = curr * 10 + ch - '0';
            }
            else
            {
       
                // Add curr to sum
                ret += curr;
       
                // Reset curr
                curr = 0;
            }
        }
        ret += curr;
        return ret;
    }
 
  // Driver code
  static void Main() {
    string S = "11aa32bbb5";
    Console.WriteLine(sumOfDigits(S));
  }
}
 
// This code is conributed by divyeshrabadiya07.

 
 

Output: 
48

 

Time Complexity: O(N)
Auxiliary Space: O(1) 

My Personal Notes arrow_drop_up
Recommended Articles
Page :