Матч 324, Декодирование палиндрома (PalindromeDecoding)

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

 

Имеются строка code и массивы чисел position и  length. Необходимо декодировать строку code, используя следующий алгоритм. Просматриваем элементы массива position слева направо и для каждого значения i возьмем подстроку длины length[i], начинающуюся в позиции position[i]. Вставляем эту обращенную подстроку в code в позицию position[i] + length[i].

 

Класс: PalindromeDecoding

Метод: string decode(string code, vector<int> position,

                     vector<int> length)

Ограничения: code содержит от 1 до 10 символов ‘0’ – ‘9’, ‘a’ – ‘z’, ‘A’ – ‘Z’, position содержит от 1 до 10 элементов, length и position содержат одинаковое число элементов, возвращаемая строка содержит не более 1000 символов.

 

Вход. Строка code и массивы чисел position и  length.

 

Выход. Количество слов в самой длинной аллитерации.

 

Пример входа

code

position

length

"ab"

{0}

{2}

“Misip”

{2,3,1,7}

{1,1,2,2}

TC206

{1,2,5}

{1,1,1}

 

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

abba

Mississippi

TCCC2006

 

 

РЕШЕНИЕ

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

 

Моделируем процесс декодирования строки code согласно описанному алгоритму.

 

ПРОГРАММА

 

#include <cstdio>

#include <vector>

#include <string>

#include <algorithm>

using namespace std;

 

class PalindromeDecoding

{

public:

  string decode(string code, vector<int> position, vector<int> length)

  {

    string temp;

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

    {

      temp = code.substr(position[i],length[i]);

      reverse(temp.begin(),temp.end());

      code.insert(position[i] + length[i],temp);

    }

    return code;

  }

};