TGViewer
JavaScript | LeetCode JavaScript | LeetCode @easy_frontend_task · 8.33K subscribers
Post #2317 579
Задача: 1278. Palindrome Partitioning III
Сложность: hard

Вам дана строка s, содержащая строчные буквы, и целое число k. Вам нужно: Сначала заменить некоторые символы s на другие строчные английские буквы. Затем разделить s на k непустых непересекающихся подстрок так, чтобы каждая подстрока была палиндромом. Верните минимальное количество символов, которое нужно изменить, чтобы разделить строку.

Пример:
Input: s = "abc", k = 2
Output: 1


👨‍💻 Алгоритм:

1⃣Используйте динамическое программирование для вычисления количества изменений, необходимых для превращения любой подстроки в палиндром.

2⃣Используйте еще одно динамическое программирование для разбиения строки на k палиндромических подстрок с минимальным количеством изменений.

3⃣Верните минимальное количество изменений, найденное во втором шаге.

😎 Решение:
var minChangesToMakePalindrome = function(s, k) {
const n = s.length;

const minChangeToPalindrome = (i, j) => {
let changes = 0;
while (i < j) {
if (s[i] !== s[j]) {
changes++;
}
i++;
j--;
}
return changes;
};

const dp1 = Array.from({ length: n }, () => Array(n).fill(0));
for (let length = 1; length <= n; length++) {
for (let i = 0; i <= n - length; i++) {
let j = i + length - 1;
dp1[i][j] = minChangeToPalindrome(i, j);
}
}

const dp2 = Array.from({ length: n + 1 }, () => Array(k + 1).fill(Infinity));
dp2[0][0] = 0;

for (let i = 1; i <= n; i++) {
for (let kk = 1; kk <= k; kk++) {
for (let j = 0; j < i; j++) {
dp2[i][kk] = Math.min(dp2[i][kk], dp2[j][kk - 1] + dp1[j][i - 1]);
}
}
}

return dp2[n][k];
};


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
More from @easy_frontend_task
  1. Oct 11, 2026Задача: 651. 4 Keys Keyboard Сложность: medium Представьте, что у вас есть специальная кла…
  2. Oct 9, 2026Post #2571
  3. Oct 9, 2026Задача: 1054. Distant Barcodes Сложность: medium На складе имеется ряд штрих-кодов, где i-…
  4. Oct 9, 2026Задача: 1237. Find Positive Integer Solution for a Given Equation Сложность: medium Если д…
  5. Oct 8, 2026Задача: №19. Remove Nth Node From End of List Сложность: medium Дан связанный список и чис…
  6. Oct 7, 2026Задача: 1057. Campus Bikes Сложность: medium В городке, изображенном на плоскости X-Y, ест…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →