Skip to content
Related Articles

Related Articles

Reversing an Equation

View Discussion
Improve Article
Save Article
  • Difficulty Level : Basic
  • Last Updated : 19 Jul, 2022
View Discussion
Improve Article
Save Article

Given a mathematical equation using numbers/variables and +, -, *, /. Print the equation in reverse.

Examples:  

Input : 20 - 3 + 5 * 2
Output : 2 * 5 + 3 - 20

Input : 25 + 3 - 2 * 11
Output : 11 * 2 - 3 + 25

Input : a + b * c - d / e
Output : e / d - c * b + a
Recommended Practice

Approach : The approach to this problem is simple. We iterate the string from left to right and as soon we strike a symbol we insert the number and the symbol in the beginning of the resultant string.

Implementation:

C++




// C++ program to reverse an equation
#include <bits/stdc++.h>
using namespace std;
 
// Function to reverse order of words
string reverseEquation(string s)
{
    // Resultant string
    string result;
    int j = 0;
    for (int i = 0; i < s.length(); i++) {
         
        // A space marks the end of the word
        if (s[i] == '+' || s[i] == '-' ||
            s[i] == '/' || s[i] == '*') {
             
            // insert the word at the beginning
            // of the result string
            result.insert(result.begin(),
                s.begin() + j, s.begin() + i);
            j = i + 1;
             
            // insert the symbol
            result.insert(result.begin(), s[i]);
        }
    }
     
    // insert the last word in the string
    // to the result string
    result.insert(result.begin(), s.begin() + j,
                                     s.end());
    return result;
}
 
// driver code
int main()
{
    string s = "a+b*c-d/e";
    cout << reverseEquation(s) << endl;
    return 0;
}


Java




// Java program to reverse an equation
import java.util.*;
 
class GFG{
     
// Function to reverse order of words
public static String reverseEquation(String s)
{
     
    // Resultant string
    String result = "", str = "";
    int j = 0;
     
    for(int i = 0; i < s.length(); i++)
    {
         
        // A space marks the end of the word
        if (s.charAt(i) == '+' ||
            s.charAt(i) == '-' ||
            s.charAt(i) == '/' ||
            s.charAt(i) == '*')
        {
             
            // Insert the word at the beginning
            // of the result string
            result = s.charAt(i) + str + result;
            str = "";
        }
        else
        {
            str += s.charAt(i);
        }
    }
    result = str + result;
    return result;
}
 
// Driver code
public static void main(String args[])
{
    String s = "a+b*c-d/e";
     
    System.out.println(reverseEquation(s));
}
}
 
// This code is contributed by bolliranadheer


C#




// C# program to reverse an equation
using System;
using System.Text;
 
public class GFG{
 
  // Function to reverse order of words
  public static string reverseEquation(string s)
  {
     
    // Resultant string
    string result = "", str = "";
 
    for(int i = 0; i < s.Length; i++)
    {
 
      // A space marks the end of the word
      if (s[i] == '+' || s[i] == '-' || s[i] == '/' || s[i] == '*')
      {
 
        // Insert the word at the beginning
        // of the result string
        result = s[i] + str + result;
        str = "";
      }
      else
      {
        str += s[i];
      }
    }
    result = str + result;
    return result;
  }
 
  // Driver Code
  static public void Main (){
 
    string s = "a+b*c-d/e";
 
    Console.Write(reverseEquation(s));
  }
}
 
// This code is contributed by shruti456rawal


Python3




# Python3 Program to reverse an equation
# Function to reverse order of words
def reverseEquation(s):
     
    # Reverse String
    result=""
    for i in range(len(s)):
         
        # A space marks the end of the word
        if(s[i]=='+' or s[i]=='-' or s[i]=='/' or s[i]=='*'):
             
            # insert the word at the beginning
            # of the result String
            result = s[i] + result
         
        # insert the symbol
        else:
            result = s[i] + result
    return result
 
# Driver Code
s = "a+b*c-d/e"
print(reverseEquation(s))
 
# This code is contributed by simranjenny84


Output

e/d-c*b+a

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

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


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!