Problem of the day
Ninja has been given a program to do basic string compression. For a character that is consecutively repeated more than once, he needs to replace the consecutive duplicate occurrences with the count of repetitions.
Example:
If a string has 'x' repeated 5 times, replace this "xxxxx" with "x5".
The string is compressed only when the repeated character count is more than 1.
Note :
The consecutive count of every character in the input string is less than or equal to 9.
The first line contains an integer 'T' which denotes the number of test cases or queries to be run.
The first line of each test case contains one string ‘S’ denoting the input string that needs to be compressed.
Output Format:
For each case, we need to print a string representing the compressed string.
The output of each test case will be printed in a separate line.
Note:
You do not need to input or print anything, and it has already been taken care of. Just implement the given function.
1 <= T <= 5
1 <= |S| <= 5000
Where |S| is the size of the string.
Time Limit: 1 sec
2
aaabbddccc
ggttttffffrreee
a3b2d2c3
g2t4f4r2e3
Test case 1:
For the first test case of sample output 1, our compressed string is “a3b2d2c3”. It represents that the string contains 3 consecutive ‘a’, 2 consecutive ‘b’, 2 consecutive ‘d’, and 3 consecutive ‘c’.
1
xyzzz
xyz3
Test case 1:
For the first test case of sample output 2, our compressed string is ‘xyz3’. As the occurrence of ‘x’ and ‘y’ is 1, hence we do not need to add the count of their repetitions. For the last character ‘z’, we have 3 repetitions.
Keep a count of each consecutive repeating character traveling the string.
Here, we can simply traverse the string and run two loops where the outer loop will hold the unique characters and the inner loop will count the consecutive repetitions of that character. Once, we encounter a new character, our inner loop breaks and now our outer loop will start again from the new character. In this process, while getting the repetitions of each character, we can append the character and its count of repetitions depending on the condition that the repetition should be greater than 1.
O(N) where N is the length of the input string.
Though we are using two loops to iterate through the string, our outer loop is only iterating through the different characters present in the string while the inner loop is iterating to count the repetition of the current character in the outer loop. Hence, each character of the string is only traversed once, so our time complexity is O(N).
O(1)
We only need constant space. So it’s O(1).