3. What is the output of the following code snippet for
s = "aab"?
function minCut(s) {
const n = s.length;
const isPalindrome = Array.from({length: n}, () => Array(n).fill(false));
for (let i = 0; i < n; i++) {
isPalindrome[i][i] = true;
}
for (let length = 2; length <= n; length++) {
for (let start = 0; start <= n - length; start++) {
let end = start + length - 1;
if (s[start] === s[end]) {
if (length === 2) {
isPalindrome[start][end] = true;
} else {
isPalindrome[start][end] = isPalindrome[start + 1][end - 1];
}
}
}
}
const cuts = Array(n).fill(0);
for (let i = 0; i < n; i++) {
let minCut = i;
for (let j = 0; j <= i; j++) {
if (isPalindrome[j][i]) {
minCut = j === 0 ? 0 : Math.min(minCut, cuts[j - 1] + 1);
}
}
cuts[i] = minCut;
}
return cuts[n - 1];
}
console.log(minCut(s));