Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2019, 16:38   #1
Константин01
Пользователь
 
Регистрация: 11.05.2019
Сообщений: 21
По умолчанию [C++] Число вхождений подстроки в строку.

Найти число вхождений подстроки в строку. (C++)

В общем случае мы используем алгоритм КМП, однако что делать если паттерн может содержать знак "?", который означает любой символ или его отсутствие?

Константин01 вне форума Ответить с цитированием
Старый 01.06.2019, 19:09   #2
Dekay
Пользователь
 
Регистрация: 21.06.2016
Сообщений: 65
По умолчанию

Ну а обычный поиск за квадрат по времени не пройдет?
Dekay вне форума Ответить с цитированием
Старый 01.06.2019, 21:06   #3
Константин01
Пользователь
 
Регистрация: 11.05.2019
Сообщений: 21
По умолчанию

Нет.

Ограничение O(n+m+Z)

где,

n - длина шаблона
m - длина текста
Z - длина строки между знаками вопроса.
Константин01 вне форума Ответить с цитированием
Старый 02.06.2019, 00:32   #4
Dekay
Пользователь
 
Регистрация: 21.06.2016
Сообщений: 65
По умолчанию

Стоп.
Знаки вопрос стоят только в одном месте непрерывно?
Dekay вне форума Ответить с цитированием
Старый 02.06.2019, 09:26   #5
Константин01
Пользователь
 
Регистрация: 11.05.2019
Сообщений: 21
По умолчанию

Исходя из условия задачи, я думаю, что знаки могут быть расположены в произвольном порядке,

например,

"abc??ab" или "ab?ab?ac".
Константин01 вне форума Ответить с цитированием
Старый 02.06.2019, 17:29   #6
Dekay
Пользователь
 
Регистрация: 21.06.2016
Сообщений: 65
По умолчанию

Цитата:
Сообщение от Константин01 Посмотреть сообщение
Исходя из условия задачи, я думаю, что знаки могут быть расположены в произвольном порядке,
Какого условия?
Можно его увидеть? Именно адекватное, красивое условие, а не вашу интерпретацию с кмп.
Потому что я не понимаю какие строки даны <chars><?><chars> или <chars>?<chars>?<chars> или еще какие-то
Dekay вне форума Ответить с цитированием
Старый 03.06.2019, 16:48   #7
Константин01
Пользователь
 
Регистрация: 11.05.2019
Сообщений: 21
По умолчанию

Шаблон поиска задан строкой длины m, в которой кроме обычных символов могут встречаться символы “?”.
Найти позиции всех вхождений шаблона в тексте длины n. Каждое вхождение шаблона предполагает, что
все обычные символы совпадают с соответствующими из текста, а вместо символа “?” в тексте встречается
произвольный символ.
Время работы - O(n + m + Z), где Z - общее -число вхождений подстрок шаблона “между вопросиками” в
исходном тексте. m ≤ 5000, n ≤ 2000000.
Константин01 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена вхождений строки на строку Luchfan12 Общие вопросы по Java, Java SE, Kotlin 1 05.03.2015 15:30
поиск символов (подсчёт вхождений подстроки в строку) Kukurudza Общие вопросы C/C++ 2 24.09.2011 10:18
Определить кол-во вхождений символа в си-строку. mohita Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 29.11.2010 04:28
Найти кол-во вхождений подстроки в строку Kuzya59 Общие вопросы Delphi 4 21.09.2009 12:46
Функция для определения числа вхождений подстроки в строку motorway Microsoft Office Excel 1 15.07.2009 23:28