Skip to content

Commit 92167c9

Browse files
authored
Create 1531-string-compression-ii.js
1 parent faee286 commit 92167c9

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

1531-string-compression-ii.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {string} s
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
const getLengthOfOptimalCompression = function(s, k) {
7+
const m = new Map()
8+
function counter(start, last, lastCount, left) {
9+
if(left < 0) return Infinity
10+
if(start >= s.length) return 0
11+
let res
12+
const k = `${start}-${last}-${lastCount}-${left}`
13+
if(m.has(k)) return m.get(k)
14+
if(s[start] === last) {
15+
const incr = (lastCount === 1 || lastCount === 9 || lastCount === 99) ? 1 : 0
16+
res = incr + counter(start + 1, last, lastCount + 1, left)
17+
} else {
18+
const keepCounter = 1 + counter(start + 1, s[start], 1, left)
19+
const delCounter = counter(start + 1, last, lastCount, left - 1)
20+
res = Math.min(keepCounter, delCounter)
21+
}
22+
m.set(k, res)
23+
return res
24+
}
25+
return counter(0, '', 0, k)
26+
};

0 commit comments

Comments
 (0)