11. Remove K Digits
The problem can be found at the following link: Question Link
My Approach
Initialize a pair last with values {0, K}, where last.first represents the index and last.second represents the remaining removal count.
Iterate through the string S:
Skip leading zeros and update the last pair accordingly.
Decrement K until it becomes zero or no more leading zeros are encountered.
Break out of the loop if K becomes zero.
Create a stack num to store the digits of the final number.
Set the starting index as last.first and update K from last.second.
Iterate through the remaining characters of the string:
While the stack is not empty, the top element is greater than the current digit, and there are still removals (K), pop elements from the stack.
Push the current digit onto the stack.
Pop any remaining elements from the stack based on the remaining removals (K).
Construct the final result string by popping elements from the stack and reversing it.
If the result is an empty string, set it to "0".
Return the final result.
Time and Auxiliary Space Complexity
Time Complexity:
O(N)
, where n is the length of the input stringAuxiliary Space Complexity:
O(N)
, where n is the length of the input string
Code (C++)
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