Шифрование:
| Код | private static string Encrypt(string input) { int count = 0; string outStr = ""; char ch = ' ';
// проходим по символам в строке for (int i = 0; i <= input.Length - 1; i++) { ch = input[i]; // запоминаем текущий символ
// цикл по проходу от текущего символа к концу строки // (на случай, если до конца строки идет один и тот же символ) for (int j = i; j <= input.Length - 1; j++) { // если текущий символ не равен начальному, то выходим из цикла, то есть: // fehhgh // | | // | --- значение input[j] // | // --- значение переменной ch // input[j] не равно ch - значит символ уже не тот, выходим из цикла. if (input[j] != ch) break; // иначе (символ все еще тот же), увеличиваем его кол-во (переменная count) else count++; } // добавляем текущий символ к нашей выходной строке outStr += ch;
// если символ встретился более одного раза if (count != 1) { // добавляем значение переменной count к строке outStr += count.ToString(); // устанавливаем значение счетчика равным количеству повторений символа минус 1 i += --count; } // сбрасываем счетчик количества повторений символа в 0 count = 0; } return outStr; }
|
Расшифрование:
| Код | private static string Decrypt(string input) { char ch = ' '; string outStr = "";
// проходим по строке for (int i = 0; i <= input.Length - 1; i++) { // запоминаем текущий символ ch = input[i];
// если текущий символ является цифрой if (char.IsDigit(ch)) { // конвертируем его в целочисленной значение int len = Convert.ToInt32(ch.ToString());
// добавляем это значение в виде повторений символа ch в выходную строку for (int j = 0; j <= len - 2; j++) outStr += input[i - 1]; } // иначе, добавляем символ к выходной строке else outStr += ch; } return outStr; }
|
Вывод:
| Код | Enter string: fehhh eryaaa feh3 erya3 fehhh eryaaa
|
|