1var minCut = function (s) {2function isPal(l, r) {3while (l < r) {4if (s[l] === s[r]) l++, r--;5else return false;6}7return true;8}910let map = new Map();11function dfs(idx = 0) {12if (idx === s.length) return 0;13if (map.has(idx)) return map.get(idx);14let min = Infinity;15for (let i = idx; i < s.length; i++) {16if (isPal(idx, i)) min = Math.min(min, 1 + dfs(i + 1));17}18map.set(idx, min);19return min;20}2122return dfs() - 1;23};