26- Remove Duplicate Letters
The problem can be found at the following link: Question Link
My Approach
Initialize two vectors:
freq
: A vector of size 26 to keep track of the frequency of each lowercase letter in the input strings
. Initialize all elements to 0.visited
: A vector of size 26 to keep track of whether a character has been visited or not. Initialize all elements to 0.
Iterate through the characters of the input string
s
:For each character
ch
ins
, increment the corresponding frequency in thefreq
vector. This will count how many times each character appears in the string.
Initialize an empty string
ans
to store the result.Get the length of the input string
s
and store it in a variablen
.Iterate through the characters of the input string
s
again using a loop fromi=0
toi<n
:Decrement the frequency of the current character
s[i]
in thefreq
vector.
Check if the current character
s[i]
has not been visited yet (i.e.,visited[s[i]-'a']
is 0):Enter a while loop that continues as long as the following conditions are met:
ans
is not empty (ans.size()
is non-zero).The last character in
ans
(i.e.,ans.back()
) is greater than the current characters[i]
.The frequency of the last character in
ans
is greater than 0 (i.e.,freq[ans.back()-'a'] > 0
).
Inside the while loop:
Mark the character as not visited by setting
visited[ans.back()-'a']
to 0.Remove the last character from
ans
by usingans.pop_back()
.
After exiting the while loop, append the current character
s[i]
to theans
string to add it to the result.Mark the current character
s[i]
as visited by settingvisited[s[i]-'a']
to 1.Repeat steps 5-8 for all characters in the input string
s
.Return the final
ans
string, which contains the unique characters from the input string in lexicographically smallest order while maintaining their relative order.
Time and Auxiliary Space Complexity
Time Complexity:
O(n)
Auxiliary Space Complexity:
O(n)
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 rishabhv12/Daily-Leetcode-Solution repository.
Last updated