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

Pythonでランレングス文字列デコードイテレータクラスを実装するプログラム


ランレングスでエンコードされた小文字の文字列sを使用して構築するイテレータクラスを定義するとします。このイテレータには、次の2つの関数があります-

  • next()これにより、イテレータ内の次の要素が検索されます
  • hasnext()これは、次の要素が存在するかどうかをチェックします

したがって、入力がs ="2b1a"のような場合、sを使用してオブジェクトを作成し、next()、hasnext()、next()、next()、hasnext()を呼び出すと、出力は"b"になります。 、True、 "b"、 "a"、False。

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

  • コンストラクターを定義します。これには時間がかかります
  • 出力:=新しいリスト
  • num:=空白の文字列
  • sの各iについて、
    • iがアルファベットの場合、
      • 出力の最後にnumを挿入
      • 出力の最後にiを挿入
      • num:=空白の文字列
    • それ以外の場合、
      • num:=num + i
  • 関数next()を定義します。
  • hasnext()がtrueの場合、
    • count:=output [0]
    • 文字:=出力[1]
    • count:=count-1
    • カウント>0の場合、
      • output [0]:=output [0]-1
    • それ以外の場合、
      • output:=output[インデックス2から終了まで]
    • 返信レター
  • 関数hasnext()を定義します。
  • 出力のサイズが0でない場合、
    • Trueを返す
  • Falseを返す

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

class RunLengthIterator:
   def __init__(self, s):
     self.output = []
     num = ""
     for i in s:
         if i.isalpha():
            self.output.append(int(num))
            self.output.append(i)
            num = ""
         else:
            num += i

   def next(self):
      if self.hasnext():
         count = self.output[0]
         letter = self.output[1]
         count -= 1
         if count > 0:
            self.output[0] -= 1
         else:
            self.output = self.output[2:]
         return letter

   def hasnext(self):
      if len(self.output) != 0:
         return True
      return False

s = "2b1a"
obj = RunLengthIterator(s)
print(obj.next())
print(obj.hasnext())
print(obj.next())
print(obj.next())
print(obj.hasnext())

入力

"2b1a"
obj = RunLengthIterator(s)
obj.next()
obj.hasnext()
obj.next()
obj.next()
obj.hasnext()

出力

b
True
b
a
False

  1. Pythonプログラムを実行する方法は?

    コードを記述したら、コードを実行して実行し、出力を取得する必要があります。プログラムを実行すると、コードが正しく記述され、目的の出力が生成されるかどうかを確認できます。 Pythonプログラムの実行は非常に簡単な作業です。 IDLEで実行 IDLEでPythonプログラムを実行するには、指定された手順に従います- Pythonコードを記述して保存します。 プログラムを実行するには、[モジュールの実行]に移動します または、F5をクリックするだけです。 コマンドラインで実行 Pythonスクリプトファイルは「.py」拡張子で保存されます。 Pythonスクリプトを保存したら

  2. 文字列に偶数の長さの単語を出力するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列を指定すると、文字列内のすべての単語を均等な長さで表示する必要があります。 アプローチ split()関数を使用して入力文字列を分割します。 forを使用して文字列の単語を繰り返し処理します ループ& len()を使用して単語の長さを計算します 機能。 長さが均等であると評価されると、単語が画面に表示されます。 それ以外の場合、画面に単語は表示されません。 次に、以下の実装を見てみましょう- 例 def printWords(s): # split