I need to create a function called compress that compresses a string by replacing any repeated letters with a letter and number. My function should return the shortened version of the string. I’ve been able to count the first character but not any others.
Ex:
>>> compress("ddaaaff") 'd2a3f2' def compress(s): count=0 for i in range(0,len(s)): if s[i] == s[i-1]: count += 1 c = s.count(s[i]) return str(s[i]) + str(c)
Advertisement
Answer
Here is a short python implementation of a compression function:
def compress(string): res = "" count = 1 #Add in first character res += string[0] #Iterate through loop, skipping last one for i in range(len(string)-1): if(string[i] == string[i+1]): count+=1 else: if(count > 1): #Ignore if no repeats res += str(count) res += string[i+1] count = 1 #print last one if(count > 1): res += str(count) return res
Here are a few examples:
>>> compress("ddaaaff") 'd2a3f2' >>> compress("daaaafffyy") 'da4f3y2' >>> compress("mississippi") 'mis2is2ip2i'