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
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