Какой лучший способ удалить дубликаты из строки в PHP (или любом другом языке)? - PullRequest
0 голосов
/ 16 марта 2011

Я ищу самый известный алгоритм удаления дубликатов из строки. Я могу придумать множество способов сделать это, но я ищу решение, которое известно тем, что оно особенно эффективно.

Допустим, у вас есть следующие строки:

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

Я ожидаю, что этот алгоритм выведет для каждого (соответственно):

  • Lorem Ipsum
  • Lorem
  • Lorem Ipsum Dolor

Обратите внимание, я делаю это на PHP, если кто-нибудь знает о каких-либо встроенных функциях PHP, которые могут помочь с этим.

Спасибо!

Ответы [ 5 ]

5 голосов
/ 16 марта 2011
$arr = explode( " " , $string );
$arr = array_unique( $arr );
$string = implode(" " , $arr);
2 голосов
/ 16 марта 2011

Не знаю об эффективности, но, возможно, это может сделать:

$str = implode(" ", array_unique(explode(" ", $str)));
2 голосов
/ 16 марта 2011
$words = array_unique(explode(' ',$text));
echo implode(' ',$words);

если вы хотите улучшить его, вы можете использовать preg_split с \ s \ W для взрывающихся слов

1 голос
/ 16 марта 2011

Лучший способ сделать это:

  1. Сортировать слова внутри строки
  2. Удалить дубликаты, повторяя отсортированные слова

Другая возможность - использоватьset конструкция, если ваш язык поддерживает это.

0 голосов
/ 09 ноября 2016

Вы можете попробовать код ниже для удаления дубликата кода из любого предложения

$arr = explode(" " , $string);
$arr = preg_replace('/(\w{2,})(?=.*?\\1)\W*/', '', $arr);
$string = implode(" " , $arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...