Оптимальный алгоритм поиск текста в массиве
- Войдите на сайт для отправки комментариев
Пнд, 27/07/2015 - 14:43
Доброго времени суток!
Подскажите начинающему оптимальный алгоритм поиск текста в массиве.
Например есть массив char sym[] = "alpha beta gamma delta"
необходимо определить в нем наличие слова gamma
как это можно реализовать в наилучшем виде?
Just Google it: https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%BF%D0%BE%D0%B4%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8
Единого наилучшего алгоритма нет и не может существовать в принципе.
Во-первых, два существенно различающихся варианта, когда входной массив отсортирован, и когда - нет.
Потом поиск можкт быть регистро-зависимый и независимый и т.п.
Опять же, если мы сравниваем алгоритмы практически одинаковой сложности, оазличающиеся только константами, важным оказывается, какую именно операцию мы используем для оценки сложности. Операция сравнения не всегда отражает реальную скорость работы алгоритмов.
Почитал по ссылке, понял что мне нет необходимости реализовывать весь алгоритм поиска.
Объясню что пытаюсь реализовать.
В массив попадают данные принимаемые GPRS модулем. Мне необходимо определить момент приема СМС сообщения. Все СМС начинаются с +CMT:
т.е. это можно реализовать просто:
Смущает детский подход к реализации. Есть ли более красивое решение?
Как говорится: Если работает, не трож!
А вообще есть функция strcmp или strncmp, которая сравнивает две строки (или только первые n символов строк) и говорит, равны они или нет. В Вашем случае, как я понимаю, она должна вполне подойти.
Спасибо!
А чем не кошерна специально для этого предназначенная функция strstr?
Да, это хороший вариант, спасибо за совет!
rene, вы получаете данные из serial?
Хороший вариант обрабатывать их побайтно с помощью автомата, а не складировать во временную строку, imho
Да, наверное если бы я писал с нуля, я так бы и сделал, но поскольку я взял готовый пример и адаптировал его под себя, переписывать все с нуля нет желания. Но за имхо спасибо.
Здравствуйте!
Не могли бы выложить скетч полностью, тоже пытаюсь изучать этот вопрос.
Спасибо!
Если не трудно, приведите пожалуйста како нибудь простой код обработки побайтно, с помощью автомата
!
Здравствуйте!
Не могли бы выложить скетч полностью, тоже пытаюсь изучать этот вопрос.
Вот окончательный вариант. Последняя функция _SendTextMessage() в программе не используется, оставил на случай необходимости отправки СМС.