1
var getLengthOfOptimalCompression = function (s, k) {2
const memo = new Map();4
const backtrack = (i, lastChar, lastCharCount, k) => {5
if (k < 0) return Number.POSITIVE_INFINITY;6
if (i >= s.length) return 0;8
const memoKey = `${i}#${lastChar}#${lastCharCount}#${k}`;9
if (memoKey in memo) return memo[memoKey];11
if (s[i] === lastChar) {12
const incrementor = [1, 9, 99].includes(lastCharCount) ? 1 : 0;14
incrementor + backtrack(i + 1, lastChar, lastCharCount + 1, k);16
memo[memoKey] = Math.min(17
1 + backtrack(i + 1, s[i], 1, k), //keep char18
backtrack(i + 1, lastChar, lastCharCount, k - 1) //delete char23
return backtrack(0, "", 0, k);