Как мне изменить этот код для решения данной проблемы, возможно ли вообще решить эту проблему с помощью этого метода? ⇐ C++
-
Гость
Как мне изменить этот код для решения данной проблемы, возможно ли вообще решить эту проблему с помощью этого метода?
Кодирование длины серии — это метод сжатия строк, который работает путем замены последовательных одинаковых символов (повторяющихся 2 или более раз) конкатенацией символа и числа, обозначающего количество символов (длину серии). Например, чтобы сжать строку «aabccc», мы заменяем «aa» на «a2» и заменяем «ccc» на «c3». Таким образом, сжатая строка становится «a2bc3».
Обратите внимание, что в этой задаче мы не добавляем цифру «1» после отдельных символов.
Дана строка s и целое число k. Вам необходимо удалить не более k символов из s, чтобы версия s в кодировке серийной длины имела минимальную длину.
Определите минимальную длину закодированной версии s после удаления не более k символов.
Пример 1:
[*]Ввод: s = "aaabcccd", k = 2 [*]Выход: 4
Объяснение: Сжатие s без удаления даст нам «a3bc3d» длины 6. Удаление любого из символов «a» или «c» максимально уменьшит длину сжатой строки до 5, например delete 2 ' a', то у нас будет s = "abcccd", что в сжатом виде будет abc3d. Поэтому оптимальный способ — удалить «b» и «d», тогда сжатая версия s будет «a3c3» длины 4.
Пример 2:
[*]Ввод: s = "aabbaa", k = 2 [*]Выход: 2
Объяснение: Если мы удалим оба символа «b», результирующая сжатая строка будет «a4» длины 2.
Пример 3:
[*]Ввод: s = "ааааааааа", k = 0 [*]Выход: 3
Объяснение: поскольку k равно нулю, мы не можем ничего удалить. Сжатая строка — «a11» длины 3.
Ограничения:
[*]1
Кодирование длины серии — это метод сжатия строк, который работает путем замены последовательных одинаковых символов (повторяющихся 2 или более раз) конкатенацией символа и числа, обозначающего количество символов (длину серии). Например, чтобы сжать строку «aabccc», мы заменяем «aa» на «a2» и заменяем «ccc» на «c3». Таким образом, сжатая строка становится «a2bc3».
Обратите внимание, что в этой задаче мы не добавляем цифру «1» после отдельных символов.
Дана строка s и целое число k. Вам необходимо удалить не более k символов из s, чтобы версия s в кодировке серийной длины имела минимальную длину.
Определите минимальную длину закодированной версии s после удаления не более k символов.
Пример 1:
[*]Ввод: s = "aaabcccd", k = 2 [*]Выход: 4
Объяснение: Сжатие s без удаления даст нам «a3bc3d» длины 6. Удаление любого из символов «a» или «c» максимально уменьшит длину сжатой строки до 5, например delete 2 ' a', то у нас будет s = "abcccd", что в сжатом виде будет abc3d. Поэтому оптимальный способ — удалить «b» и «d», тогда сжатая версия s будет «a3c3» длины 4.
Пример 2:
[*]Ввод: s = "aabbaa", k = 2 [*]Выход: 2
Объяснение: Если мы удалим оба символа «b», результирующая сжатая строка будет «a4» длины 2.
Пример 3:
[*]Ввод: s = "ааааааааа", k = 0 [*]Выход: 3
Объяснение: поскольку k равно нулю, мы не можем ничего удалить. Сжатая строка — «a11» длины 3.
Ограничения:
[*]1
Мобильная версия