Матч 210, Заглавная строка (TitleString)

Дивизион 2, Уровень 1

 

В заданной строке необходимо заменить все первые буквы слов на заглавные. Слова в строке разделены пробелами.

 

Класс: TitleString

Метод: string toFirstUpperCase(string title)

Ограничения: строка title содержит от 0 до 50 символов, строка title содержит символы ‘a’ – ‘z’ и пробелы.

 

Вход. Строка title.

 

Выход. Строка title, в которой все первые буквы слов заменены на заглавные.

 

Пример входа

title

“introduction to algorithms”

“more than  one   space    between     words”

“the king and I”

 

Пример выхода

“Introduction To Algorithms”

“More Than  One   Space    Between     Words”

“The King And I”

 

 

РЕШЕНИЕ

обработка строк

 

Проходим по строке, каждую первую букву слова заменяем на заглавную при помощи функции toupper, объявленной в библиотеке <ctype.h>. Буква title[i] является первой буквой слова, если title[i 1] = ' ' и title[i] является буквой. При этом следует отдельно обработать случай i = 0.

 

ПРОГРАММА

 

#include <cstdio>

#include <cctype>

#include <string>

using namespace std;

 

class TitleString

{

public:

  string toFirstUpperCase(string title)

  {

    for(int i = 0; i < title.size(); i++)

      if ((!i || title[i-1] == ' ') && isalpha(title[i]))

          title[i] = toupper(title[i]);

    return title;

  }

};