これが問題です(Codeforcesから)
ポリカープは人生の意味についてよく考えます。彼は、エディターで入力するときでさえ、これを常に行います。彼が陰気になるたびに、彼は完全に集中できなくなり、一度だけ押す必要のあるキーを繰り返し押します。たとえば、「お元気ですか」というフレーズの代わりに、「hhoow aaaare yyouou」と入力できます。
Polycarp は、このようなエラーを修正するプロセスを自動化することにしました。彼は、同一の連続した文字のペアを削除するプラグインをテキスト エディターに作成することにしました (テキスト内に存在する場合)。もちろん、これは正確にはポリカープが必要としているものではありませんが、彼は何かから始めなければなりません!
Polycarp を支援し、メインのプラグイン モジュールを作成します。プログラムは、文字列から、連続する同一の文字のすべてのペアを削除する必要があります。削除後に新しいペアが表示された場合、プログラムはそれらも削除する必要があります。技術的には、その作業は次と同等である必要があります。文字列に連続する同一文字のペアが含まれている場合、そのペアを削除する必要があります。連続する同一文字の削除は、どの順序でも同じ結果になるため、どの順序でも実行できることに注意してください。
これが私の解決策です..何らかの理由で、非常に大きなテストケースに失敗します。私のものは、想定よりも多くの文字を取り除くようです。この正規表現は間違っていますか?
str = gets.chomp
while str =~ /(.)\1/
str.gsub!(/(.)\1+/,'')
end
puts str
編集 - このソリューションは、連続するすべての文字グループを削除するため、機能しません。重複を取り除くだけです。私が正しいと信じているこの方法で行うと、非常に大きな文字列でタイムアウトします。
str = gets.chomp
while str =~ /(.)\1/
str.gsub!(/(.)\1/,'')
end
puts str