0

文字列から重複を削除するための最もよく知られているアルゴリズムを探しています。これを行うにはさまざまな方法が考えられますが、特に効率的であることが知られているソリューションを探しています。

次の文字列があるとします。

  • Lorem Ipsum Lorem Ipsum
  • Lorem Lorem Lorem
  • Lorem Ipsum Dolor Lorem Ipsum Dolor Lorem Ipsum Dolor

私はこのアルゴリズムが(それぞれ)それぞれに対して出力することを期待します:

  • Lorem Ipsum
  • Lorem
  • Lorem Ipsum Dolor

誰かがこれを助けることができる組み込みのPHP関数を知っている場合に備えて、私はPHPでこれを行っていることに注意してください。

ありがとう!

4

5 に答える 5

6
$arr = explode( " " , $string );
$arr = array_unique( $arr );
$string = implode(" " , $arr);
于 2011-03-16T20:04:20.500 に答える
2

効率については知らないが、多分これはできる:

$str = implode(" ", array_unique(explode(" ", $str)));
于 2011-03-16T20:03:52.550 に答える
2
$words = array_unique(explode(' ',$text));
echo implode(' ',$words);

改善したい場合は、preg_splitと\ s\Wを使用して単語を展開できます。

于 2011-03-16T20:04:09.987 に答える
1

それを行うための最良の方法:

  1. 文字列内の単語を並べ替える
  2. 並べ替えられた単語を繰り返して重複を削除します

他の可能性はset、あなたの言語がそれをサポートしている場合、構文を使用することです。

于 2011-03-16T20:01:59.197 に答える
0

以下のコードを試して、任意の文から重複コードを削除できます

$arr = explode(" " , $string);
$arr = preg_replace('/(\w{2,})(?=.*?\\1)\W*/', '', $arr);
$string = implode(" " , $arr);
于 2016-11-09T10:13:35.557 に答える