Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 문자열 압축을 수행하는 프로그램

<시간/>

문자열 s가 있다고 가정합니다. 이 문자열을 Run length 인코딩 형식으로 압축해야 합니다. 따라서 여기서 'bbbb'와 같이 문자가 k번 연속으로 반복되면 문자 'b'가 4번 연속으로 반복되므로 인코딩된 형식은 'b4'가 됩니다. 단일 문자의 경우 카운트를 추가하지 않습니다.

따라서 입력이 s ="abbbaaaaaccdaaab"와 같으면 출력은 ab3a6c2da3b

가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • res :=빈 문자열
  • cnt :=1
  • 범위 1에서 s - 1 크기의 i에 대해
    • s[i - 1]이 s[i]와 같으면
      • cnt :=cnt + 1
    • 그렇지 않으면
      • res :=res 연결 s[i - 1]
      • cnt> 1이면
        • res :=res 연결 cnt
      • cnt :=1
  • res :=res + s의 마지막 문자
  • cnt> 1이면
    • res :=res 연결 cnt
  • 반환 결과

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(s):
   res = ""
   cnt = 1
   for i in range(1, len(s)):
      if s[i - 1] == s[i]:
         cnt += 1
      else:
         res = res + s[i - 1]
         if cnt > 1:
            res += str(cnt)
         cnt = 1
   res = res + s[-1]
   if cnt > 1:
      res += str(cnt)
   return res

s = "abbbaaaaaaccdaaab"
print(solve(s))

입력

"abbbaaaaaaccdaaab"

출력

ab3a6c2da3b