04. Reversing the Equation
The problem can be found at the following link: Question Link
My Approach
To reverse the given equation, I have used the following approach:
I utilized two stacks:
numto store the numbers andopto store the operators encountered.I iterated through the given string
strcharacter by character.If the current character
iis not a digit (i.e., an operator), I pushed the accumulated strings(which represents a number) into thenumstack and pushed the operatoriinto theopstack. Then, I resetsto an empty string.If the current character
iis a digit, I appended it to the strings.After processing all the characters, I pushed the remaining accumulated string
sinto thenumstack.Next, I initialized an empty string
sto store the reversed equation.While the
opstack is not empty, I popped the top element from both thenumandopstacks. I appended the popped number and operator alternately to the strings.Finally, I appended the remaining number from the
numstack to the strings.I returned the reversed equation string
s.
Time and Space Complexity
Time Complexity:
O(N), whereNis the length of the given stringstr. The algorithm iterates through each character ofstronce.Space Complexity:
O(N), whereNis the length of the given stringstr. This is because the algorithm uses two stacks to store the numbers and operators encountered.
Code (C++)
class Solution
{
public:
string reverseEqn (string str)
{
stack<string> num;
stack<char> op;
string s = "";
for(auto i: str){
if(i<'0' || i>'9'){
num.push(s);
op.push(i);
s = "";
}
else
s += i;
}
num.push(s);
s = "";
while(!op.empty()){
s += num.top();
s += op.top();
num.pop();
op.pop();
}
s += num.top();
return s;
}
};
Contribution and Support
For discussions, questions, or doubts related to this solution, please visit our discussion section. We welcome your input and aim to foster a collaborative learning environment.
If you find this solution helpful, consider supporting us by giving a ⭐ star to the getlost01/gfg-potd repository.
Last updated
Was this helpful?