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

1047文字列内の隣接するすべての重複を削除(すべての重複したエントリの隣接する文字列を削除します)

 

リンク:https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/

 

トピック:

 

  ストリングSは、重複を削除し、隣接する2つの同一の文字を選択し、それらを削除し、小文字で与えられます。

  削除されるまで繰り返し、削除を複製Sに行われ、継続することはできません。

  すべての重複削除が完了した後、最終的な文字列を返します。唯一の答え保証。

 

  例:

  入力:「abbaca」
  出力:「CA」
  の解釈:
  例えば、「abbaca」のを、私たちは、これは、この時間は、削除操作を実行できる唯一の重複で、隣接する二つの文字と同じように「BB」を削除することができます。我々は取得した後にのみ、「AA」を持っている文字列「AACAは」、削除重複を行うことができ、最終的な文字列は、「CA」です。
 

  ヒント:

  1 <= s.length <= 20000
  のみ小文字によってS。

 

アイデア:

  私は手紙がに、そして次のものと同じ場合、スタックへの、またはスタックに行く、スタックを助けるためにここにいる、そして最終的にStringBufferの文字列を生成するために、それを転置助けます。100%以上が、30%以上のメモリは、それが迷惑です。

  (アイデアは私のコード規格を変更.......)

 

コード:

 

1    パブリック 静的文字列removeDuplicates(文字列S){
 2      のchar [] CH = S.toCharArray()。
3      スタックスタック= 新しいスタック()。
4      INT I = 0 5      一方(iは< ch.length)を{
 6        場合(stack.empty()){
 7          stack.push(CH [I])。
8        } そう であれば(stack.peek()に等しい(CH [I])){
 9          stack.pop()。
10        } {
 11          stack.push(CH [I])。
12        }
13        私は++します;
14      }
 15  
16      StringBuilderのSB = 新規のStringBuilder();
17      ながら(!stack.empty()){
 18        sb.append(stack.pop())。
19      }
 20      リターンsb.reverse()のtoString()。
21    }

 

おすすめ

転載: www.cnblogs.com/blogxjc/p/11220403.html