Given two strings, print all the common characters in lexicographical order. If there are no common letters, print -1. All letters are lower case.
Input : string1 : geeks string2 : forgeeks Output : eegks Explanation: The letters that are common between the two strings are e(2 times), k(1 time) and s(1 time). Hence the lexicographical output is "eegks" Input : string1 : hhhhhello string2 : gfghhmh Output : hhh
This problem has existing solution please refer Print common characters of two Strings in alphabetical order link. We will solve this problem in python using intersection property and collections.Counter() module. Approach is simple,
- Convert both strings into dictionary data type using Counter(str) method, which contains characters of string as key and their frequencies as value.
- Now find common elements between two strings using intersection ( a&b ) property.
- Resultant will also be an counter dictionary having common elements as keys and their common frequencies as value.
- Use elements() method of counter dictionary to expand list of keys by their frequency number of times.
- Sort the list and concatenate each character of output list without space to print resultant string.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.
In case you wish to attend live classes with industry experts, please refer Geeks Classes Live