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

Pythonで文字列内の隣接するすべての重複を削除する


小文字の文字列Sがあるとします。重複した削除操作が実行されます。これは、隣接する2つの等しい文字を選択し、それらを削除することによって行われます。

重複がなくなるまで、Sから重複を繰り返し削除します。

このような重複する削除がすべて完了したら、文字列を返します。答えはユニークであることが保証されています。

文字列が「abbacaca」であるとすると、答えは「caca」になります。最初に重複するbbを削除し、次に文字列が「aacaca」、次にaaを削除し、次に文字列が「caca」である場合、そのような重複はありません。

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

  • 配列stを定義し、iを初期化します:=0
  • while i<文字列の長さ-
    • stにいくつかの要素があり、st =st [i]の最後の要素がある場合は、iを1増やし、stから最後の要素を削除します
    • それ以外の場合は、string [i]をstに追加し、iを1増やします
  • 最後にstのすべての要素を文字列として結合し、戻ります

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

class Solution(object):
   def removeDuplicates(self, S):
      st = []
      i = 0
      while i < len(S):
         if len(st)!=0 and st[-1]==S[i]:
            i+=1
            st.pop(-1)
         else:
            st.append(S[i])
            i+=1
      return "".join(i for i in st)
ob1 = Solution()
print(ob1.removeDuplicates("abbacaca"))

入力

"abbacaca"

出力

"caca"

  1. 指定された文字列のすべての順列を出力するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −文字列の可能なすべての順列を表示するために必要な文字列が与えられます。 次に、以下の実装のソリューションを見てみましょう- 例 # conversion def toString(List):    return ''.join(List) # permutations def permute(a, l, r):    if l == r:       print (toString(a))    e

  2. Pythonで文字列の先頭の空白をすべて削除するにはどうすればよいですか?

    lstrip()メソッドは、文字列の先頭にある先頭の空白、改行、およびタブ文字を削除します。次のように使用できます: >>> '     hello world!'.lstrip() 'hello world!' また、strip()関数を使用して、同じ方法で末尾と先頭の両方の空白を削除することもできます。例: >>> '     hello world!    '.strip() 'hello world!'