Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
AvengerAlive
5 / 5 / 1
Регистрация: 30.07.2011
Сообщений: 257
1

Молниеносное нахождение подстрок

25.08.2011, 20:21. Просмотров 2782. Ответов 43
Метки нет (Все метки)

Воодится число тестов. Далее каждый тест содержит 2 строки. Подстроку и текст. Надо найти количество подстрок в тексте. Количество тестов неизвестно, но много. Длина подстроки 10000, а текста 1000000.
Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
string str1;
string str2;
string str;
int i,n,m,q=0,t,k,a;
int *mas;
cin >> t;
while (t--)
{
 cin >> str2;
 cin >> str1;  
 n=str1.length();
 m=str2.length();
 mas=(int*)malloc((n+m+1)*sizeof(int));
 str=str2+'#'+str1; mas[0]=0;
 a=0; k=0; q=0;
 for(i=1; i<n+m+1; i++)
  {         
   while((k>0) && (str[k]!=str[i])) k=mas[k-1];
   if (str[k]==str[i]) k++;
   if (k==m) q++;
   mas[i]=k;
  }
 cout << q << endl;
}
return 0;
}
Медленно, кто-нибудь может ускорить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2011, 20:21
Ответы с готовыми решениями:

Поиск подстрок
Задание подсчитать все подстроки с использованием функции strstr(). Делаю так:...

вырезки подстрок
написал вот такой код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Количество подстрок в строке
Нужно что-бы пользователь ввел 2 строки и ему вывело сообщение о том, сколько...

Замена подстрок в строке
Кто знает, как в данной строке заменить все подстроки &quot;123&quot; на &quot;456&quot;?

Подсчёт количества подстрок
Посмотрите пожалуйста нормально ли написана функция, которая считает количество...

43
#pragma
Временно недоступен
955 / 226 / 14
Регистрация: 12.04.2009
Сообщений: 925
26.08.2011, 15:16 41
Может быть, это поможет?
Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными.
Там строка проматывается кусками по несколько байт.
0
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
26.08.2011, 15:30 42
Цитата Сообщение от #pragma Посмотреть сообщение
Там строка проматывается кусками по несколько байт.
Выглядит как будто бы Вы предлагаете использовать брутфорс. Я думаю, здесь все же немного другой случай.
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.08.2011, 16:46 43
AvengerAlive, ваша задача с какого сайта?
0
valeriikozlov
Эксперт С++
4686 / 2512 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
27.08.2011, 02:40 44
AvengerAlive,
ссылку на задачу можете дать?
0
27.08.2011, 02:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2011, 02:40

Поиск и вывод подстрок
злорадствуйте подскажите пожалуйста немного запутался как вывести через find...

Удаление подстрок из строки
Помогите, пожалуйста, с реализацией функции. Есть строка str типа string и...

Удаление всех подстрок из строки
Здравствуйте. После выполнения моей программы у меня выдает вот такую ошибку ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru