Python: Compress repeated character by storing the length of a given string
17. String Compression
Write a Python program to read a given string character by character and compress repeated characters by storing the length of those character(s).
Sample Solution:
Python Code:
from itertools import groupby
def encode_str(input_str):
return [(len(list(n)), m) for m,n in groupby(input_str)]
str1 = "AAASSSSKKIOOOORRRREEETTTTAAAABBBBBBDDDDD"
print("Original string:")
print(str1)
print("Result:")
print(encode_str(str1))
str1 = "jjjjiiiiooooosssnssiiiiwwwweeeaaaabbbddddkkkklll"
print("\nOriginal string:")
print(str1)
print("Result:")
print(encode_str(str1))
Sample Output:
Original string: AAASSSSKKIOOOORRRREEETTTTAAAABBBBBBDDDDD Result: [(3, 'A'), (4, 'S'), (2, 'K'), (1, 'I'), (4, 'O'), (4, 'R'), (3, 'E'), (4, 'T'), (4, 'A'), (6, 'B'), (5, 'D')] Original string: jjjjiiiiooooosssnssiiiiwwwweeeaaaabbbddddkkkklll Result: [(4, 'j'), (4, 'i'), (5, 'o'), (3, 's'), (1, 'n'), (2, 's'), (4, 'i'), (4, 'w'), (3, 'e'), (4, 'a'), (3, 'b'), (4, 'd'), (4, 'k'), (3, 'l')]
For more Practice: Solve these Related Problems:
- Write a Python program to compress a given string by reading character by character and replacing sequences with the character followed by its count.
- Write a Python program to implement run-length encoding on a string and then reconstruct the original string from the compressed form.
- Write a Python program to compress a string using itertools.groupby and then map a function to format the output as "char:count".
- Write a Python program to read a string and output a compressed version where consecutive repeated characters are replaced by the character and the number of repetitions, but only if the count is greater than one.
Go to:
Previous: Write a Python program find the sorted sequence from a set of permutations of a given input.
Next: Write a Python program to generate permutations of n items in which successive permutations differ from each other by the swapping of any two items.
Python Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.