Матч 226, Очень большая строка (VLNString)

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

 

Задана строка, содержащая последовательность слов. Слова отделяются бруг от друга пробелами. Необходимо вывести первые буквы всех слов, преобразовав их в верхний регистр. При этом слова “and”, “the”, “of” следует игнорировать.

 

Класс: VLNString

Метод: string makeAcronym(string longName)

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

 

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

 

Выход. Строка содержит первые буквы всех слов, преобразованные в верхний регистр. Слова “and”, “the”, “of” игнорируются.

 

Пример входа

longName

“dance dance revolution”

  return  of  the king  

“the united states of america

 

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

“DDR”

“RK”

USA

 

 

РЕШЕНИЕ

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

 

Используем потоковое чтение из строки. Каждое прочитанное слово сравниваем с “and”, “the” и “of”. Если оно не равно ни одному из них, записываем его первую букву в конец результирующей строки res.

 

ПРОГРАММА

 

#include <cstdio>

#include <sstream>

#include <string>

using namespace std;

 

class VLNString{

public:

  string makeAcronym(string longName)

  {

    string res="",temp;

    stringstream in(longName);

    while(in >> temp)

      if ((temp != "and") && (temp != "the") && (temp != "of"))

        res += toupper(temp[0]);

    return res;

  }

};