длина подпоследовательности в строке

Мне нужно реализовать функцию lastSeq, которая получает в качестве аргумента string str и char chr и возвращает длину последней последовательности повторяющихся chr (последовательность может быть любой длины), например: lastSeq("abbaabbbbacd",'a') должно возвращать 1
lastSeq("abbaabbbbacd",'b') должно возвращать 4 lastSeq("abbaabbbbacd",'t') должно возвращаться 0

Есть ли функция С++, которая может решить эту проблему?


person Yakov    schedule 01.11.2011    source источник
comment
Ok. Какой у Вас вопрос? Что вы пробовали?   -  person Mat    schedule 01.11.2011
comment
Для этого нет прямой функции, вам придется реализовать алгоритм, используя различные функции поиска, доступные для строки. См. хороший справочник для строковых функций std::string или C.   -  person Nim    schedule 01.11.2011


Ответы (1)


Похоже, это домашнее задание, поэтому я просто дам вам направление, чтобы вы могли найти ответ самостоятельно.

Во-первых, как бы вы это сделали сами, без компьютера, чтобы выдать правильный результат для ваших образцов. Из этих ручных запусков, как бы вы обобщили их простыми шагами, чтобы вы могли решить проблему для всех различных входных данных.

К этому моменту у вас должен быть грубый алгоритм решения проблемы. Что вы знаете о хранении строк в C++ и методах, доступных в этом классе? Можно ли использовать их для решения некоторых шагов вашего алгоритма?

Попробуйте написать программу с использованием этих функций, скомпилировать ее и запустить. Получили ли вы ожидаемый результат? Если нет, можете ли вы попытаться распечатать промежуточное состояние (используя std::cout << "Some value: " << variable << "\n";), чтобы попытаться отладить его.

После того, как вы все это сделали, и если у вас все еще есть проблемы, обновите свой вопрос с помощью своего кода, и мы сможем предоставить вам более целенаправленную помощь.

person Sylvain Defresne    schedule 01.11.2011