Invertir una ecuación

Dada una ecuación matemática usando números/variables y +, -, *, /. Imprime la ecuación al revés.

Ejemplos:  

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

Enfoque: El enfoque de este problema es simple. Iteramos la string de izquierda a derecha y, tan pronto como pulsamos un símbolo, insertamos el número y el símbolo al comienzo de la string resultante.

Implementación:

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
Producción

e/d-c*b+a

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Este artículo es una contribución de Raghav Sharma . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *