Матч
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;
}
};