Given a string of characters of length less than 10. We need to print all the alpha-numeric abbreviation of the string.
The alpha-numeric abbreviation is in the form of characters mixed with the digits which is equal to the number of skipped characters of a selected substring. So, whenever a substring of characters is skipped, you have to replace it with the digit denoting the number of characters in the substring. There may be any number of skipped substrings of a string. No two substrings should be adjacent to each other. Hence, no two digits are adjacent in the result. For a clearer idea, see the example.
Input : ANKS Output : ANKS (nothing is replaced) ANK1 (S is replaced) AN1S (K is replaced) AN2 (KS is replaced) A1KS (N is replaced) A1K1 (N and S are replaced) A2S (NK is replaced) A3 (NKS is replaced) 1NKS (A is replaced) 1NK1 (A and S are replaced) 1N1S (A and N is replaced) 1N2 (A and KS are replaced) 2KS (AN is replaced) 2K1 (AN and S is replaced) 3S (ANK is replaced) 4 (ANKS is replaced) Input : ABC Output : ABC AB1 A1C A2 1BC 1B1 2C 3 Note: 11C is not valid because no two digits should be adjacent, 2C is the correct one because AB is a substring, not A and B individually
Source: Google Interview question
The idea is to start with empty string. At every step, we have two choices.
- Consider character as it is.
- Add character to count. If there is no count, then use 1.
You can see how each character can either add up to the result as a character or as a digit. This further gives rise to 2^n abbreviations at the end where n is the length of string.
GFG GF1 G1G G2 1FG 1F1 2G 3
This article is contributed by Aditya Nihal Kumar Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
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.
- How to remove all non-alphanumeric characters from a string in Java
- Sort an alphanumeric string such that the positions of alphabets and numbers remain unchanged
- How to check string is alphanumeric or not using Regular Expression
- Generate a string from an array of alphanumeric strings based on given conditions
- Compare two strings considering only alphanumeric characters
- Count alphanumeric palindromes of length N
- Find the smallest window in a string containing all characters of another string
- String matching where one string contains wildcard characters
- Check if a string can become empty by recursively deleting a given sub-string
- Sort a string according to the order defined by another string
- Check if a string can be obtained by rotating another string 2 places
- String containing first letter of every word in a given string with spaces
- Find length of longest subsequence of one string which is substring of another string
- Check if a given string is sum-string
- Decode an Encoded Base 64 String to ASCII String
- Longest palindromic string formed by concatenation of prefix and suffix of a string
- Lexicographically smallest string whose hamming distance from given string is exactly K
- Decode a median string to the original string
- Count subsequences in first string which are anagrams of the second string
- Convert string X to an anagram of string Y with minimum replacements