26- Remove Duplicate Letters
Last updated
Was this helpful?
Last updated
Was this helpful?
The problem can be found at the following link:
Initialize two vectors:
freq
: A vector of size 26 to keep track of the frequency of each lowercase letter in the input string s
. 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
in s
, increment the corresponding frequency in the freq
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 variable n
.
Iterate through the characters of the input string s
again using a loop from i=0
to i<n
:
Decrement the frequency of the current character s[i]
in the freq
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 character s[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 using ans.pop_back()
.
After exiting the while loop, append the current character s[i]
to the ans
string to add it to the result.
Mark the current character s[i]
as visited by setting visited[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 Complexity: O(n)
Auxiliary Space Complexity: O(n)
For discussions, questions, or doubts related to this solution, please visit our . 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 repository.