Матч
257, Код замены (SubstitutionCode)
Дивизион 2, Уровень
1
В задаче следует декодировать
строку символов code. Каждая цифра закодирована
буквой. Ключом является строка key из
10 букв. Цифра ‘1’ соответствует первой букве ключа key, цифра ‘2’ – второй букве и так далее. Цифра ‘0’ соответствует последней букве. Буквы закодированной строки code,
которые не встречаются в ключе key,
игнорируются.
Класс: SubstitutionCode
Метод: int getValue(string key, string
code)
Ограничения:
code содержит от 1 до 9 символов ‘A’ – ‘Z’, key содержит
в точности 10 разных символов, code содержит хотя бы один символ,
содержащийся в key.
Вход. Две строки символов key и
code.
Выход. Декодированная строка.
Пример входа
key |
code |
“TRADINGFEW” |
“LGXWEV” |
“ABCDEFGHIJ” |
“XJ” |
“CRYSTALBUM” |
“MMA” |
Пример выхода
709
0
6
РЕШЕНИЕ
обработка строк
Для каждой i - ой буквы из кода code
следует найти ее позицию pos в ключе key
при помощи метода find класса string. Если буква не найдена, метод возвратит -1. Если
соответствующая буква найдена в ключе, то припишем к результату res цифру (pos + 1) % 10.
ПРОГРАММА
#include <cstdio>
#include <string>
using namespace std;
class SubstitutionCode
{
public:
int getValue(string key, string code)
{
int i, pos, res;
for(i = res = 0; i < code.size();
i++)
{
pos = key.find(code[i]);
if (pos >= 0) res = res * 10 + (pos +
1) % 10;
}
return res;
}
};