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
$words = array_unique(explode(' ',$text));
echo implode(' ',$words);

如果你想让它变得更好,你可以使用 preg_split 和 \s\W 来爆炸单词

于 2011-03-16T20:04:09.987 回答
2

不知道效率,但也许这可以做到:

$str = implode(" ", array_unique(explode(" ", $str)));
于 2011-03-16T20:03:52.550 回答
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 回答