Какой лучший способ удалить дубликаты из строки в PHP (или любом другом языке)?
Я ищу самый известный алгоритм для удаления дубликатов из строки. Я могу придумать множество способов сделать это, но я ищу решение, которое известно как особенно эффективное.
Допустим, у вас есть следующие строки:
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 ответов
$arr = explode( " " , $string );
$arr = array_unique( $arr );
$string = implode(" " , $arr);
Не знаю об эффективности, но, возможно, это может сделать:
$str = implode(" ", array_unique(explode(" ", $str)));
$words = array_unique(explode(' ',$text));
echo implode(' ',$words);
если вы хотите улучшить его, вы можете использовать preg_split с \s\W для взрывающихся слов
Лучший способ сделать это:
- Сортировать слова внутри строки
- Удалить дубликаты, повторяя отсортированные слова
Другая возможность заключается в использовании set
конструкция, если ваш язык поддерживает это.
Вы можете попробовать код ниже для удаления дубликата кода из любого предложения
$arr = explode(" " , $string);
$arr = preg_replace('/(\w{2,})(?=.*?\\1)\W*/', '', $arr);
$string = implode(" " , $arr);