Матч
361, Поиск текста (SearchBox)
Дивизион 2, Уровень 1
Найти в тексте text подстроку search, которая встречается не раньше позиции start. Если wholeWord =
“Y”, то подстрока search должна
выступать отдельным словом. Если подстрока search
с требуемыми условиями в тексте text
не встречается, то вернуть -1.
Класс: SearchBox
Метод: int
find(string text, string search,
string wholeWord, int start)
Ограничения:
text и search содержат от 1 до 50 символов ‘a’ – ‘z’, ‘A’ – ‘Z’, wholeWord
содержит “Y” или “N”, 0 £ start
< text.size().
Вход. Текст text, искомая подстрока search, условие поиска wholeWord, позиция start, с которой начинается поиск.
Выход. Номер позиции, с которой начинается искомая подстрока,
удовлетворяющая заданным условиям.
Пример входа
text |
search |
wholeWord |
start |
“We dont need no education” |
“ed” |
“N” |
13 |
“No dark sarcasm in the classroom” |
“The” |
“Y” |
5 |
“All in all youre just another brick in the wall” |
“just” |
“Y” |
17 |
Пример выхода
16
-1
17
РЕШЕНИЕ
обработка строк
Если wholeWord = “Y”, то добавим к началу и в конец текста и искомой
подстроки по пробелу. В результате поиск будет удачным, если исходная подстрока
слева и справа от себя содержит пробел, то есть является отдельным словом. Для
поиска подстроки воспользуемся функцией find класса string.
ПРОГРАММА
#include <cstdio>
#include <string>
using namespace std;
class SearchBox
{
public:
int find(string text,string search,string wholeWord,int start)
{
if (wholeWord[0] == 'Y')
search = " " + search + " ",
text = " " + text + " ";
return text.find(search,start);
}
};