@olkhovich

Как исправить алгоритм кодирования строки?

Вроде простая задачка, но уже долго не могу додумать решение.
Условие:
Каждый символ кодируется своим обозначением и количеством повторений. Например, для строки «aaaaaabbbbbaccccddeeeee» результатом кодирования будет строка «a6b5a1c4d2e5»
Мой вариант
std::string codingString(std::string inputString) {
    std::string str;
    int count = 1;
    for (int i = 0; i < inputString.length(); i++) {
        if (inputString[i] == inputString[i + 1]) {
            count++;
            str += operator+(inputString[i], std::to_string(count));
        }
        else {
            count = 1;
        }
    }
    return str;
}

Не могу понять, как избавиться от лишнего вывода вне цикла.
  • Вопрос задан
  • 169 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Вы записываете результат при равенстве соседних символов, а надо - наоборот.

std::string encodeString(std::string str) {
  std::string result = "";
  int count = 0;
  int len = str.length();

  for (int i = 0; i < len; i++) {
    count++;

    if (i == len - 1 || str[i] != str[i + 1]) {
      result += str[i] + std::to_string(count);
      count = 0;
    }
  }

  return result;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы