Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчёт количества вхождений группы символов 
:(
    Опции темы
lv151
Дата 15.7.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



Есть строка(char*). Как грамотнее подсчитать количество вхождений группы символов.

Например:
kfwqfefqwop#@kefopqkwef#@qweqeqeqw#@
Нужно узнать количество вхождений #@.

Это сообщение отредактировал(а) lv151 - 15.7.2009, 09:34
PM MAIL   Вверх
Andrew121
Дата 15.7.2009, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 21.6.2009

Репутация: 1
Всего: 1



...

Это сообщение отредактировал(а) Andrew121 - 15.7.2009, 09:43
PM MAIL   Вверх
lv151
Дата 15.7.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



Проблема в том что строка может быть очень большой.
PM MAIL   Вверх
ller
Дата 15.7.2009, 09:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

Репутация: 2
Всего: 4



1.
string::find 
size_t find ( const string& str, size_t pos = 0 ) const
это для строк string.
2.
search из STL.

Они позволяют искать с произвольного места, а возвращают итератор на найденный элемент, организуешь цикл, и ищешь все вхождения

Добавлено через 1 минуту и 43 секунды
http://www.cplusplus.com/reference/algorithm/search/
http://www.cplusplus.com/reference/string/string/find/

Этот сайт все знает smile

Добавлено через 4 минуты и 10 секунд
3.
strstr
Кто ищет тот всегда найдет.

http://www.cplusplus.com/reference/clibrary/cstring/strstr/

 smile 

Это сообщение отредактировал(а) ller - 15.7.2009, 09:47
PM MAIL   Вверх
zim22
Дата 15.7.2009, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(lv151 @  15.7.2009,  09:33 Найти цитируемый пост)
Есть строка(char*). Как грамотнее подсчитать количество вхождений группы символов.

Код

#include <string>

int main() {
  std::string str = "kfwqfefqwop#@kefopqkwef#@qweqeqeqw#@";

  int counter = 0;
  std::string::size_type position = 0;

  while ((position = str.find("#@", position)) != std::string::npos) {
    ++counter;
    ++position;
  }
  return 0;
}

***
Цитата(lv151 @  15.7.2009,  09:46 Найти цитируемый пост)
Проблема в том что строка может быть очень большой.

объект string тоже может быть очень большим smile
***
Цитата

If the string we're searching in has length n and the substring has m, 
then the complexity of this method is O(n*m)

если для вас критична скорость нахождения подстрок, то используйте специализированные алгоритмы:
http://ru.wikipedia.org/wiki/Алгоритм_Бойера_—_Мура
http://ru.wikipedia.org/wiki/Алгоритм_Кнут...орриса_—_Пратта

Это сообщение отредактировал(а) zim22 - 15.7.2009, 10:25


--------------------
PM MAIL   Вверх
Lazin
Дата 15.7.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(zim22 @  15.7.2009,  09:55 Найти цитируемый пост)
если для вас критична скорость нахождения подстрок, то используйте специализированные алгоритмы:
http://ru.wikipedia.org/wiki/Алгоритм_Бойера_—_Мура
http://ru.wikipedia.org/wiki/Алгоритм_Кнут...орриса_—_Пратта

в общем - алгоритмы прямого поиска
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1170 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.