Open In App

Remove trailing zeros from the sum of two numbers ( Using Stack )

Last Updated : 06 Mar, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

Given two numbers A and B, the task is to remove the trailing zeros present in the sum of the two given numbers using a stack.

Examples:

Input: A = 124, B = 186
Output: 31
Explanation: Sum of A and B is 310. Removing the trailing zeros modifies the sum to 31.

Input: A=130246, B= 450164
Output : 58041

Approach: The given problem can be solved using the string and stack data structures. Follow the steps below to solve the problem:

Below is the implementation of the above approach:

C++14
// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;

// Function to remove trailing
// zeros from the sum of two numbers
string removeTrailing(int A, int B)
{
    // Stores the sum of A and B
    int N = A + B;

    // Stores the digits
    stack<int> s;

    // Stores the equivalent
    // string of integer N
    string strsum = to_string(N);

    // Traverse the string
    for (int i = 0; i < strsum.length(); i++) {

        // Push the digit at i
        // in the stack
        s.push(strsum[i]);
    }

    // While top element is '0'
    while (s.top() == '0')

        // Pop the top element
        s.pop();

    // Stores the resultant number
    // without trailing 0's
    string res = "";

    // While s is not empty
    while (!s.empty()) {

        // Append top element of S in res
        res = res + char(s.top());

        // Pop the top element of S
        s.pop();
    }

    // Reverse the string res
    reverse(res.begin(), res.end());

    return res;
}

// Driver Code
int main()
{
    // Input
    int A = 130246, B = 450164;

    // Function Call
    cout << removeTrailing(A, B);
    return 0;
}
Java
// Java program for the above approach
import java.io.*;
import java.util.*;

class GFG{

// Function to remove trailing
// zeros from the sum of two numbers
static String removeTrailing(int A, int B)
{
    
    // Stores the sum of A and B
    int N = A + B;

    // Stores the digits
    Stack<Character> s = new Stack<Character>();

    // Stores the equivalent
    // string of integer N
    String strsum = Integer.toString(N);

    // Traverse the string
    for(int i = 0; i < strsum.length(); i++) 
    {
        
        // Push the digit at i
        // in the stack
        s.push(strsum.charAt(i));
    }

    // While top element is '0'
    while (s.peek() == '0')
    {
        
        // Pop the top element
        s.pop();
    }

    // Stores the resultant number
    // without trailing 0's
    String res = "";

    // While s is not empty
    while (s.empty() == false) 
    {
        
        // Append top element of S in res
        res = res + (char)s.peek();

        // Pop the top element of S
        s.pop();
    }

    StringBuilder str = new StringBuilder();
    str.append(res);

    // Reverse the string res
    str.reverse();

    return str.toString();
}

// Driver Code
public static void main (String[] args) 
{
    
    // Input
    int A = 130246, B = 450164;

    // Function Call
    System.out.println(removeTrailing(A, B));
}
}

// This code is contributed by Dharanendra.L.V.
Python3
# Python 3 program for the above approach

# Function to remove trailing
# zeros from the sum of two numbers
def removeTrailing(A,  B):

    # Stores the sum of A and B
    N = A + B

    # Stores the digits
    s = []

    # Stores the equivalent
    # string of integer N
    strsum = str(N)

    # Traverse the string
    for i in range(len(strsum)):

        # Push the digit at i
        # in the stack
        s.append(strsum[i])

    # While top element is '0'
    while (s[-1] == '0'):

        # Pop the top element
        s.pop()

    # Stores the resultant number
    # without trailing 0's
    res = ""

    # While s is not empty
    while (len(s) != 0):

        # Append top element of S in res
        res = res + (s[-1])

        # Pop the top element of S
        s.pop()

    # Reverse the string res
    res = list(res)
    res.reverse()
    res = ''.join(res)

    return res


# Driver Code
if __name__ == "__main__":

    # Input
    A = 130246
    B = 450164

    # Function Call
    print(removeTrailing(A, B))

    # This code is contributed by ukasp.
C#
// C# program for the above approach
using System;
using System.Collections.Generic;

class GFG{
    
// Function to remove trailing
// zeros from the sum of two numbers
static string removeTrailing(int A, int B)
{
    
    // Stores the sum of A and B
    int N = A + B;
 
    // Stores the digits
    Stack<char> s = new Stack<char>();
 
    // Stores the equivalent
    // string of integer N
    string strsum = N.ToString();
 
    // Traverse the string
    for(int i = 0; i < strsum.Length; i++)
    {
         
        // Push the digit at i
        // in the stack
        s.Push(strsum[i]);
    }
 
    // While top element is '0'
    while (s.Peek() == '0')
    {
         
        // Pop the top element
        s.Pop();
    }
 
    // Stores the resultant number
    // without trailing 0's
    string res = "";
 
    // While s is not empty
    while (s.Count != 0)
    {
         
        // Append top element of S in res
        res = res + (char)s.Peek();
 
        // Pop the top element of S
        s.Pop();
    }
    
    char[] str = res.ToCharArray();
    Array.Reverse(str);
    
    // Reverse the string res
    return new string( str);
}
 
// Driver Code
static public void Main()
{
    
    // Input
    int A = 130246, B = 450164;
    
    // Function Call
    Console.WriteLine(removeTrailing(A, B));
}
}

// This code is contributed by avanitrachhadiya2155
JavaScript
<script>

        // Javascript program for the above approach

        // Function to remove trailing
        // zeros from the sum of two numbers
        function removeTrailing(A, B) {

            // Stores the sum of A and B
            let N = A + B;

            // Stores the digits
            let s = new Array();

            // Stores the equivalent
            // string of integer N
            let strsum = N.toString();

            // Traverse the string
            for (let i = 0; i < strsum.length; i++) {

                // Push the digit at i
                // in the stack
                s.push(strsum.charAt(i));
            }

            // While top element is '0'
            while (s[s.length-1] === '0') {

                // Pop the top element
                s.pop();
            }
       
            // Stores the resultant number
            // without trailing 0's
            let res = "";

            // While s is not empty
            while (s.length != 0) {

                // Append top element of S in res
                res = res.concat(s[s.length-1]);

                // Pop the top element of S
                s.pop();
            }

            let str = "";
            str = str.concat(res)

            // Reverse the string res
            str = str.split("").reverse().join("");

            return str.toString();
        }

        // Driver Code

        // Input
        let A = 130246, B = 450164;

        // Function Call
        document.write(removeTrailing(A, B));

        // This code is contributed by Hritik
        
    </script>

Output: 
58041

 

Time Complexity: O(len(A + B))
Auxiliary Space: O(len(A + B))


 


Next Article
Practice Tags :

Similar Reads