문자열 압축
chars
이 주어지면 다음 알고리즘을 사용하여 압축합니다.빈 문자열로 시작합니다
s
. chars
의 각 연속 반복 문자 그룹에 대해 다음을 수행합니다.1
인 경우 s
에 문자를 추가합니다. 압축된 문자열
s
은 별도로 반환하지 말고 입력 문자 배열chars
에 저장해야 합니다. 10
이상의 그룹 길이는 chars
에서 여러 문자로 분할됩니다.입력 배열 수정을 완료한 후 배열의 새 길이를 반환합니다.
일정한 추가 공간만 사용하는 알고리즘을 작성해야 합니다.
예 1:
입력: chars = ["a","a","b","b","c","c","c"]
출력: 6을 반환하고 입력 배열의 처음 6자는 다음과 같아야 합니다. ["a","2","b","2","c","3"]
설명: 그룹은 "aa", "bb"및 "ccc"입니다. 이것은 "a2b2c3"로 압축됩니다.
예 2:
입력: 문자 = ["a"]
출력: 1을 반환하고 입력 배열의 첫 번째 문자는 ["a"]여야 합니다.
설명: 유일한 그룹은 "a"이며 단일 문자이므로 압축되지 않은 상태로 유지됩니다.
예 3:
입력: chars = ["a","b","b","b","b","b","b","b","b","b","b","비","비"]
출력: 4를 반환하고 입력 배열의 처음 4자는 ["a","b","1","2"]여야 합니다.
설명: 그룹은 "a"및 "bbbbbbbbbbbb"입니다. 이것은 "ab12"로 압축됩니다.
제약:
1 <= chars.length <= 2000
chars[i]
는 영문 소문자, 영문 대문자, 숫자 또는 기호입니다. 해결책:
class Solution:
def compress(self, chars: List[str]) -> int:
n = len(chars)
i = 0
while i < n:
ctr = 1
while i < n - 1 and chars[i] == chars[i + 1]:
i += 1
ctr += 1
i += 1
if ctr == 1:
chars.extend([chars[i - 1]])
else:
chars.extend([chars[i - 1]] + list(str(ctr)))
for i in range(n):
chars.pop(0)
return len(chars)
Reference
이 문제에 관하여(문자열 압축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/string-compression-30j4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)