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

Pythonで特定の文字列から重複する文字を削除するプログラム


文字列sがあるとします。以前に表示された重複文字をすべて削除する必要があります。最終的な文字列は、実際の文字列と同じ順序の文字になります。

これは、順序付き辞書を使用して文字の挿入順序を維持することで解決できます。値はそれらの文字の頻度になりますが、ここでは頻度の値は重要ではありません。辞書を作成したら、キーを取得して結合するだけで文字列を取得できます。

したがって、入力がs ="bbabcaaccdbaabababc"のような場合、出力は"bacd"になります。

  • d:=キーが挿入順で順番に保存される辞書
  • sの各文字cについて、
    • cがdに存在しない場合、
      • d [c]:=0
    • d [c]:=d [c] + 1
  • 適切な順序でキーを次々に結合して、出力文字列を作成して返します。

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

from collections import OrderedDict
def solve(s):
   d = OrderedDict()
   for c in s:
      if c not in d:
         d[c] = 0
      d[c] += 1

   return ''.join(d.keys())

s = "bbabcaaccdbaabababc"
print(solve(s))

入力

"bbabcaaccdbaabababc"

出力

"bacd"

  1. Pythonで文字列から数字以外の文字を削除するにはどうすればよいですか?

    これを実現するには、さまざまな方法があります。 for ... ifステートメントを使用して、数字以外の文字を除外できます。例: >>> s = "H3ll0 P30P13" >>> ''.join(i for i in s if i.isdigit()) '303013' filterとlambda関数を使用して、文字をフィルターで除外することもできます。例: >>> s = "H3ll0 P30P13" >>> filter(lambda x:

  2. Pythonで文字列から特定の文字を削除するにはどうすればよいですか?

    文字列クラスには、文字列内のサブ文字列を置き換えるために使用できるメソッドreplaceがあります。このメソッドを使用して、削除する文字を空の文字列に置き換えることができます。例: >>> "Hello people".replace("e", "") "Hllo popl" 1行の文字列から複数の文字を削除する場合は、正規表現を使用することをお勧めします。複数の文字は「|」で区切ることができますそして、re.sub(chars_to_replace、string_to_replace_with