Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文字列圧縮を実行するプログラム


文字列sがあるとします。この文字列をランレングスエンコーディング形式に圧縮する必要があります。したがって、文字が「bbbb」のようにk回連続して繰り返される場合、文字「b」は4回連続して繰り返されるため、エンコードされた形式は「b4」になります。単一の文字の場合、カウントを追加しません。

したがって、入力がs ="abbbaaaaaaccdaaab"の場合、出力はab3a6c2da3b

になります。

これを解決するには、次の手順に従います-

  • res:=空白の文字列
  • cnt:=1
  • 範囲1からs-1のサイズのiの場合、実行
    • s[i-1]がs[i]と同じ場合、
      • cnt:=cnt + 1
    • それ以外の場合、
      • res:=res concatenate s [i-1]
      • cnt> 1の場合、
        • res:=res concatenate cnt
      • cnt:=1
  • res:=res+sの最後の文字
  • cnt> 1の場合、
    • res:=res concatenate cnt
  • return res

理解を深めるために、次の実装を見てみましょう-

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

  1. 16進文字列を10進数に変換するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 16進文字列が与えられたので、それを10進数に変換する必要があります。 問題を解決するための2つのアプローチがあります- ブルートフォースアプローチ 組み込みモジュールの使用 ブルートフォース方式 ここでは、明示的な型キャスト関数、つまり整数を利用します。この関数は、2つの引数、つまり16進数と同等の引数とベース(16)を取ります。この関数は、16進文字列を整数型の同等の10進数に変換するために使用されます。これは、さらに文字列形式に型キャストして戻すことができます。 例 #input strin

  2. 文字列内のミラー文字を検索するPythonプログラム

    ユーザー入力文字列とその位置からの位置を指定すると、文字をアルファベット順に文字列の長さまでミラーリングする必要があります。この操作では、「a」を「z」に、「b」を「y」に、「c」を「x」に、「d」を「w」に変更します。これは、最初の文字が最後になることを意味します。オン。 Inpu t: p = 3 Input string = python Output : pygslm アルゴリズム Step 1: Input the string and position from we need to mirror the characters. Step 2: Creating a s