문자열 압축
11653 단어 pythonstringsinterviewquestion
문제 설명 : 주어진 문자열을 압축하는 함수를 작성하십시오. 공간을 절약하는 경우에만 압축된 문자열을 반환합니다.
난이도: 쉬움
테스트 케이스
연산
또 다른,
시간 및 공간 복잡성
암호
class CompressString(object):
def compress(self, input):
if input is None or not input:
return input
result = ''
count = 0
prev_char = input[0]
for char in input:
if char == prev_char:
count += 1
else:
result += prev_char + (str(count) if count > 1 else '')
prev_char = char
count = 1
result += prev_char + (str(count) if count > 1 else '')
return result if len(result) < len(input) else input
More precise compression
class CompressString(object):
def compress(self, input):
if input is None or not input:
return input
result = ''
count = 0
prev_char = input[0]
for char in input:
if char == prev_char:
count += 1
else:
if count > 2:
result += prev_char + (str(count))
prev_char = char
count = 1
elif count == 1:
result += prev_char
count = 1
prev_char = char
else:
result += prev_char
result += prev_char
count = 1
prev_char = char
result += prev_char + (str(count) if count > 2 else prev_char)
return result if len(result) < len(input) else input
테스트
import unittest
from compressString import CompressString
class TestCompress(unittest.TestCase):
def testCompress(self, func):
self.assertEqual(func(None), None)
self.assertEqual(func(''), '')
self.assertEqual(func('AABBCC'), 'AABBCC')
self.assertEqual(func('AAABCCDDDDE'), 'A3BC2D4E')
self.assertEqual(func('BAAACCDDDD'), 'BA3C2D4')
self.assertEqual(func('AAABAACCDDDD'), 'A3BA2C2D4')
print('Success: testCompress')
def main():
test = TestCompress()
compress_string = CompressString()
test.testCompress(compress_string.compress)
if __name__ == '__main__':
main()
Original article
Github solution
행복한 코딩!
Reference
이 문제에 관하여(문자열 압축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codewithml/string-compression-3hgb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)