(LC)1047。文字列内の隣接するすべての重複を削除します

1047.文字列内の隣接するすべての重複を削除します

小文字で構成される文字列Sが与えられると、重複削除操作は2つの隣接する同一の文字を選択し、それらを削除します。

削除できなくなるまで、Sで重複排除操作を繰り返します。

すべての重複排除操作が完了すると、最後の文字列が返されます。答えはユニークであることが保証されています。

例:

入力: "abbaca"
出力: "ca"
説明:
たとえば、 "abbaca"では、 "bb"を削除できます。2つの文字が隣接していて同じであるため、現時点で削除できる重複アイテムはこれだけです。 。次に、文字列「aaca」を取得します。このうち「aa」のみが重複排除操作を実行できるため、最終的な文字列は「ca」になります。

促す:

1 <= S.length <= 20000
Sは、小文字の英字のみで構成されます。

回答:

public String removeDuplicates(String S) {
    
    
      char[] c = S.toCharArray();
      int len = c.length;
      Stack<Character> stack = new Stack<>();
     
      for(int i=0; i<len; i++) {
    
    
          if(stack.isEmpty() || c[i] != stack.peek()) {
    
    
              stack.push(c[i]);
          } else {
    
    
              stack.pop();
          }
      }
      StringBuilder str = new StringBuilder();
      for(Character ch:stack) {
    
    
          str.append(ch);
      }
      return str.toString();
    }

おすすめ

転載: blog.csdn.net/weixin_45567738/article/details/114603994