|
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
|
|||||||||||||||||||||
Поиск подстроки06.06.2014, 14:49. Показов 3778. Ответов 36
Метки нет (Все метки)
Привет всем. Я пишу программу для поиска подстроки. Если подстрока есть в строке, вывести YES. Иначе - NO.
Вот код(еще не дописанный)
И второй вопрос. Как сделать проверку на наличие подстроки в строке? Я так понимаю, что эта функция
0
|
|||||||||||||||||||||
| 06.06.2014, 14:49 | |
|
Ответы с готовыми решениями:
36
Поиск подстроки Поиск подстроки Поиск подстроки |
|
0 / 0 / 0
Регистрация: 06.06.2014
Сообщений: 5
|
|
| 06.06.2014, 16:18 | |
|
Как вы объявляете a и b, которые передаете функции в первом варианте?
Судя по коду, в случае нахождения подстроки функция должна возвращать индекс начала подстроки в строке. P.S. 1) У вас не проинициализирована переменная j. 2) В цикле (15-16 строки) не меняется счетчик цикла, т.е. можете бесконечно проверять условие для одного элемента. То же самое в 22-23 строках. 3) вам не нужен цикл из 13-й строчки
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
| 06.06.2014, 16:25 | ||||||
1
|
||||||
|
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
|
|
| 06.06.2014, 18:17 [ТС] | |
|
alsav22, Спасибо. Теперь аргументы не подчеркивает. Не подскажете, как теперь сделать проверку на наличие подстроки в строке? Индекс начала подстроки в строке - это i-j+1?
Добавлено через 2 минуты Я просто взял реализацию алгоритма отсюда http://ru.wikibooks.org/wiki/%... 1%82%D0%B0 Добавлено через 37 минут Вопрос еще в силе. Скажите, как теперь сделать проверку на наличие подстроки в строке? Никак не могу понять.
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||
| 06.06.2014, 18:33 | |||||||
0
|
|||||||
|
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
|
|||||||||||
| 06.06.2014, 19:02 [ТС] | |||||||||||
|
alsav22,
0
|
|||||||||||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 06.06.2014, 19:14 | |
|
0
|
|
|
66 / 66 / 54
Регистрация: 23.09.2012
Сообщений: 212
|
||||||||||||||||
| 06.06.2014, 19:35 | ||||||||||||||||
|
Сделайте так:
Для начала надо научиться считать префикс-функцию от строки
b-это то,В ЧЕМ мы ищем. + - конкатация # - любой символ, которого нет ни в a, ни в b Найдем префикс фунцию от этой строки. Пусть длина a будет n, а b - m. Тогда
pi - это вектор с префикс функии строки s
1
|
||||||||||||||||
|
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
|
|||||||||||
| 06.06.2014, 19:41 [ТС] | |||||||||||
|
alsav22, Да, я теперь понял, что это другая программа. А как мне реализовать проверку в своем коде?
Я понимаю, что функция
0
|
|||||||||||
|
66 / 66 / 54
Регистрация: 23.09.2012
Сообщений: 212
|
||||||
| 06.06.2014, 19:44 | ||||||
|
Sh@dow777,
Только вот strstr работает за O(N*M) где n и m длины строк, а алгоритм КМП за O(N+M)
0
|
||||||
|
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
|
||||||
| 06.06.2014, 20:01 [ТС] | ||||||
|
grikukan, Спасибо, но я пишу на Си. Реализацию алгоритма КМП на Си я взял отсюда(в том числе и вычисление префикс функции от строки) http://ru.wikibooks.org/wiki/%... 1%82%D0%B0. Осталось только проверку додумать.
Добавлено через 1 минуту grikukan, Спасибо. Сейчас попробую. Добавлено через 6 минут grikukanВот весь код.
0
|
||||||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||
| 06.06.2014, 20:04 | |||||||
0
|
|||||||
|
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
|
|
| 06.06.2014, 20:25 [ТС] | |
|
alsav22, В задаче пределы длин строк 1<= A,B <= 1000000
Добавлено через 19 минут alsav22, Так вы скажете мне, почему у меня выводит ошибку "Stack Overflow"?
0
|
|
|
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
|
|
| 06.06.2014, 20:47 [ТС] | |
|
фллекс27, Это что?
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 06.06.2014, 22:37 | |
|
0
|
|
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,856
|
||
| 06.06.2014, 22:43 | ||
|
вывод или выделяй память динамически, и это правильно или делай массивы глобальными, что не приветствуется Добавлено через 52 секунды Не по теме: а вообще строка на 400 страниц это круто:)
1
|
||
|
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
|
||||||
| 07.06.2014, 01:01 [ТС] | ||||||
|
ValeryS, Спасибо. Динамическое выделение памяти помогло. Но теперь другая проблема. Вот мой код.
0
|
||||||
|
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
|
||||||
| 07.06.2014, 01:27 [ТС] | ||||||
|
Kerry_Jr, Я уже писал в предыдущих постах, что мне нужно реализовать в программе алгоритм КМП. А это ведь другой способ поиска подстроки
0
|
||||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,856
|
|
| 07.06.2014, 07:41 | |
|
ну ежли ты построчно прокомментируешь свою функцию search то может и смогу помочь, а то я несколько заблудился
а может и сам найдешь ошибку при подробном комментировании
0
|
|
| 07.06.2014, 07:41 | |
|
Помогаю со студенческими работами здесь
20
Поиск подстроки Поиск подстроки
Поиск подстроки Поиск подстроки в строке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|