I would like to get common elements in two given strings such that duplicates will be taken care of. It means that if a letter occurs 3 times in the first string and 2 times in the second one, then in the common string it has to occur 2 times. The length of the two strings may be different. eg
s1 = 'aebcdee' s2 = 'aaeedfskm' common = 'aeed'
I can not use the intersection between two sets. What would be the easiest way to find the result ‘common’ ? Thanks.
Advertisement
Answer
Well there are multiple ways in which you can get the desired result. For me the simplest algorithm to get the answer would be:
- Define an empty
dict
. Liked = {}
- Iterate through each character of the first string:
if the character is not present in the dictionary, add the character to the dictionary.
else increment the count of character in the dictionary. - Create a variable as
common = ""
- Iterate through the second string characters, if the count of that character in the dictionary above is greater than 0: decrement its value and add this character to
common
- Do whatever you want to do with the
common
The complete code for this problem:
s1 = 'aebcdee' s2 = 'aaeedfskm' d = {} for c in s1: if c in d: d[c] += 1 else: d[c] = 1 common = "" for c in s2: if c in d and d[c] > 0: common += c d[c] -= 1 print(common)