Suppose we have a string s. We have to remove those characters which have already occurred before, and return the reduced string. To solve this, we shall use one ordered dictionary to maintain the insertion order of the characters. The value will be the frequency of those characters, however the frequency values are not important here. After forming the dictionary, we can simply take the keys and join them to get the string.
So, if the input is like s = "cabbbaadac", then the output will be "cabd".
To solve this, we will follow these steps −
- d := a dictionary where keys are stored in order by their insertion order
- for each character c in s, do
- if c is not present in d, then
- d[c] := 0
- d[c] := d[c] + 1
- if c is not present in d, then
- join the keys one after another in proper order to make the output string and return.
Example
Let us see the following implementation to get better understanding −
from collections import OrderedDict def solve(s): d = OrderedDict() for c in s: if c not in d: d[c] = 0 d[c] += 1 return ''.join(d.keys()) s = "cabbbaadac" print(solve(s))
Input
"cabbbaadac"
Output
cabd