|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.01.2010, 14:23 | #1 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Быстрое удаление дублирующихся слов :).
В общем имеется некое количество конструкций языка программирования. Большинство из них многословные, причем слова могут повторяться между собой, например:
Цитата:
У меня есть такие операции, для которых строка это множество слов (и даже есть операция приведения строки ко множеству - то есть удаления дублирующихся элементов). Но они неэффективны при большом числе слов, при старте программы происходит задержка в несколько секунд, это довольно-таки долго. Сравнимо с загрузкой Ворда, при функциях чуть ли не обычного Блокнота. Какие будут предложения?
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
28.01.2010, 14:36 | #2 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
В голову приходит только следующее:
1) Вносим все слова в массив, 2) Обрабатываем массив на повторения, получаем номера слов в отдельный массив. 3) В цикле идем по всем словам, которые повторяются (обращаясь к их номерам из массива): Код:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
28.01.2010, 14:46 | #3 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Да, я держу такой вариант как крайний случай .
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
28.01.2010, 14:52 | #4 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
А нет возможности удалять повторы при получении строки (ввода или что там?). Например, когда вводится слово - копировать его и в нормальную строку и в ту, "урезанную". Но в "урезанную", только, если его там еще нет.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
28.01.2010, 14:57 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну знач и я свои пять коп:
Допустим есть текст в Мемо который нужно "ужать" убрав дубликаты. Тогда код: Код:
И никакого лишнего массива
I'm learning to live...
|
28.01.2010, 14:58 | #6 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Ну я как потестю оба варианта, отпишусь какой лучше.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 28.01.2010 в 15:05. |
|
28.01.2010, 21:51 | #7 |
Форумчанин
Регистрация: 02.01.2010
Сообщений: 254
|
А еще можно задействовать функцию StringReplace:
Код:
|
29.01.2010, 06:20 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну и я свои 5 копеек добавлю... попробуйте на скорость и такой подход:
если в том коде, который разбирает строку на слова (который и формирует "множество"), использовать TStringList: Код:
Только обратите внимание, что при таком решении они будут отсортированы. Если это не устраивает, то такое решение Вам не подходит. |
29.01.2010, 08:55 | #9 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
29.01.2010, 09:25 | #10 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Все слова заданы в одной строке, если бы я мог их контролировать при вводе - я бы просто не допустил такую строку. Это служебная информация - которая выдается интерпретатором по требованиям редактора подсветки. Интерпретатор - это объект определенного класса. Редактор создает интерпретатор, тот инициализируется (загружает наименования своих команд, имена функции и т.д. из внешних файлов). Таким образом, я не знаю какую строку получу при следующем запуске - пользователь может сменить синтаксис команд языка - сделать например английские наименования команд или вообще использовать иероглифы для китайцев.
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 29.01.2010 в 09:46. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление повторяющихся слов C | vivo89 | Помощь студентам | 2 | 24.12.2009 09:18 |
Удаление слов из строки. | grave123 | Общие вопросы C/C++ | 2 | 20.12.2009 15:01 |
Удаление слов из строки С | vivo89 | Помощь студентам | 4 | 13.11.2009 22:13 |
Быстрое удаление содержимого ячеек | gadspider | Microsoft Office Excel | 11 | 18.07.2009 12:08 |
удаление одинаковых слов (С/С++) | jewel | Помощь студентам | 1 | 12.12.2008 15:14 |