文を入力しているときに気が散ってしまい、同じ単語を2回、単語を2回続けて入力してしまうことがあります。
確かめる 他の人がこれに悩まされないするために、あなたの仕事はこの問題を解決するプログラムを書くことです!
仕事
入力文字列を指定します(言語にとって重要な場合は、改行を含まないASCIIのみの入力を想定できます。) str
、中間に2回連続して発生する部分文字列が含まれ、このインスタンスを1つ持つ文字列を返します部分文字列が削除されました。
複数の可能性がある場合は、可能な限り最短の回答を返します(つまり、連続する最長の繰り返し部分文字列を選択して削除します)。
複数の同じ長さの連続する繰り返し部分文字列の場合、最初の(つまり、文字列を前後に読んでいるときに最初に現れる)部分文字列を削除します。
入力が正しい(つまり、連続した繰り返し部分文字列が常に含まれている)と想定することもできます。
例
- 入力:
hello hello world
->出力:hello world
。 - 入力:
foofoo
->出力:foo
。(そのため、はい、文字列は繰り返し部分で2回だけ構成されます)。 - 入力:
aaaaa
->出力:aaa
、最も長い繰り返し連続部分文字列がここにあるためaa
。 - 入力:
Slartibartfast
->これは有効な入力ではありません。連続する繰り返し部分文字列が含まれていないため、このケースを処理する必要はありません。 - 入力:
the few the bar
->これは別の無効な入力です。これは、繰り返し部分が元の部分の直後に続く必要があるためです。この場合、the
およびthe
それらの間の何かで区切られているため、この入力は無効です。 - 入力:
ababcbc
->出力:abcbc
。2つの可能な最長の連続した繰り返し部分文字列があるab
とbc
。としてab
以前の文字列で発生した、これは正解です。 - 入力:
Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo
。出力:Buffalo buffalo buffalo buffalo Buffalo buffalo
。(実行される置換では、大文字と小文字が区別されます)。 - 入力:
Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice couple of words twice in succession.
->出力:Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice in succession.
。最長の連続する繰り返し部分文字列のみが削除されます。
これはcode-golfであるため、コードはできるだけ短くする必要があります。そのため、バイト単位の最短回答が優先されます。がんばろう!
p
にhappens
Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice couple of words twice in succession.
を入力するとき、つまり入力として、出力はである必要がありますSometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice in succession.
。見つかった最長の重複のみが削除されます。