[プログラマ]インプリメンテーション-文字列圧縮
12665 ワード
質問リンク
エンコーディングテスト練習-文字列圧縮
問題の説明
与えられた文字列sをパラメータとして文字列の先頭からn単位に切り取って圧縮する場合、圧縮文字列の中で最も短い長さreturn
問題を解く
試してみる.
文字列を1つの単位からlen(s)/2+1つの単位にカットし、リストに置いて、それぞれ比較します.
正しいコード
せきぶん以前の文字列を保存し、 を比較する.圧縮結果を付加し、 を保存する.
試してみる.
難しいですね~来週もう一度やります
今日知ったこと
文字列をn単位で切り取り、リストに保存
1行if文に書く
エンコーディングテスト練習-文字列圧縮
問題の説明
与えられた文字列sをパラメータとして文字列の先頭からn単位に切り取って圧縮する場合、圧縮文字列の中で最も短い長さreturn
問題を解く
試してみる.
文字列を1つの単位からlen(s)/2+1つの単位にカットし、リストに置いて、それぞれ比較します.
def solution(s):
length = len(s)
answer = length
for l in range(1, length//2+1):
compressed = ""
count = 1
#주어진 문자열을 1개부터 length//2개단위로 자르기
lst = [s[i:i+l] for i in range(0, len(s), l)]
#
#
#
return answer
どのようにカットを完了したのか、リストで同じ文字列を比較する方法は思いつかない.ドアを回すと、圧縮要素がポップアップできないので、圧縮要素を-1などに変換しても、どうせ回転時に再確認して同じ問題が発生します.知らなかったので、答えを見ました.正しいコード
def solution(s):
length = len(s)
answer = length
#1개 단위부터 압축단위를 늘려가면서 확인하기
for step in range(1, length//2+1):
compressed = ""
count = 1
prev = s[0:step]
#단위 크기만큼 증가시키며 이전 문자열과 비교
for j in range(step, len(s), step):
if prev == s[j:j+step]:
count += 1
#더이상 압축하지 못하는 경우
else:
compressed += str(count) + prev if count >= 2 else prev
#상태 초기화
prev = s[j:j+step]
count = 1
#남은 문자열에 대해 처리
compressed += str(count) + prev if count >= 2 else prev
answer = min(answer, len(compressed))
return answer
このコードは、まず入力した文字列をリストにカットします.私が比較しようとしたのとは異なり、毎回カット比較を行います.また、リストで同じ文字列を比較して操作している私とは異なり、compressed
という文字列を宣言し、圧縮の結果を個別に保存しました.せきぶん
試してみる.
def solution(s):
length = len(s)
answer = length
for l in range(1, length//2+1):
compressed = ""
count = 1
lst = [s[i:i+l] for i in range(0, len(s), l)]
prev = lst[0]
for i in range(1, len(lst)):
if prev == lst[i]:
count += 1
else:
compressed += str(count) +prev if count>=2 else prev
count = 1
prev = lst[i]
print(compressed)
compressed += str(count) +prev if count>=2 else prev
answer = min(answer, len(compressed))
return answer
正解を見て、比較的重複する文字列の部分を再編成しました.難しいですね~来週もう一度やります
今日知ったこと
文字列をn単位で切り取り、リストに保存
lst = [s[i:i+l] for i in range(0, len(s), l)]
1行if文に書く
compressed += str(count) +prev if count>=2 else prev
Reference
この問題について([プログラマ]インプリメンテーション-文字列圧縮), 我々は、より多くの情報をここで見つけました https://velog.io/@woo0_hooo/programmers-구현-문자열-압축テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol