3

これは、例を使用して説明するのが最適です。段落を考えると:

The longest string in this paragraph is not the shortest string in the paragraph because it is the longest string in the paragraph

一致する部分文字列の順序を最初に頻度で、次に長さでリストしたいので、この場合はリストする必要があります(大文字と小文字を区別しません)

  • The longest string in
  • the paragraph
  • is not the shortest string in
  • because
  • it is
  • this

上記は、部分文字列を出現頻度の順にリストしたもので、その後に長さが続くため、The longest string in2 回繰り返され、最も長い部分文字列になります。 is not the shortest string inは よりも長いですがthe paragraphthe paragraph2 回繰り返されるため、最初にリストされます。

更新 (AlexC と MattBurland による観察に基づく):

スペース文字などinの部分文字列が他の部分文字列よりも多く出現する場合でも、それらが出現 * 長さよりも長い部分文字列に既に含まれている場合は、それらをリストするべきではありません。例えば、 inは 3 回で 6 文字 (末尾のスペースを含めると 9 文字) になりますが、9 文字は よりも短いためthe paragraph、記載されていません。これが理にかなっていると思いますか?

4

1 に答える 1

0

ええ、他の人が言ったように、提供した例から部分文字列を抽出して空白を削除すると、次のような文字列の配列が得られます。

string[] myArray = {"the" , "longest", .... など

今、できることは、配列にループして、出現回数を増やしながら類似した文字列を削除することです。次に、この情報をリストに追加します。

次に、もう一度ループして、長さで並べ替えます。ただし、最後に、入力文字列が最初に $ 記号のようなスペース以外のもので区切られている場合を除き、リストに含まれる文字列は単語の組み合わせにすることはできません。

「$ この段落 $ の最長の文字列 $ は $the 段落 $ の最短の文字列ではありません。これは $the 段落の最長の文字列だからです」

その場合は、上記とまったく同じ手順を実行しますが、部分文字列をスペースではなく $ 記号で区切ります。

于 2012-04-18T23:19:30.500 に答える