Skip to content

Commit df41880

Browse files
Create 1531-string-compression-ii.java
1 parent c8bab73 commit df41880

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

java/1531-string-compression-ii.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
Map<String, Integer> cache;
3+
4+
public int getLengthOfOptimalCompression(String s, int k) {
5+
cache = new HashMap<>();
6+
return count(0, k, '\0', 0, s);
7+
}
8+
private int count(int i, int k, char prev, int prev_count, String s){
9+
String curr_state = i + "," + k + "," + prev + "," + prev_count;
10+
11+
if(cache.containsKey(curr_state))
12+
return cache.get(curr_state);
13+
if(k < 0)
14+
return Integer.MAX_VALUE;
15+
if(i == s.length())
16+
return 0;
17+
18+
int res = -1;
19+
if(s.charAt(i) == prev){
20+
int incr = (prev_count == 1 || prev_count == 9 || prev_count == 99)? 1: 0;
21+
res = incr + count(i + 1, k, prev, prev_count + 1, s);
22+
}
23+
else{
24+
res = Math.min(count(i + 1, k - 1, prev, prev_count, s),
25+
1 + count(i + 1, k, s.charAt(i), 1, s));
26+
}
27+
cache.put(curr_state, res);
28+
return res;
29+
}
30+
}

0 commit comments

Comments
 (0)