-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathP60057.java
32 lines (30 loc) · 1.22 KB
/
P60057.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package programmers;
public class P60057 {
public int solution(String s) {
int ans = s.length(), slen = s.length();
for (int div = slen / 2; div > 0; div--) {
int q = slen / div, r = slen % div, len = 0, matched = 1;
String prev = s.substring(0, div);
for (int i = div; i < div * q; i += div) {
String cur = s.substring(i, i + div);
if (prev.equals(cur)) {
matched++;
} else {
len += matched > 1 ? String.valueOf(matched).length() + div : div;
matched = 1;
}
prev = cur;
}
len += matched > 1 ? String.valueOf(matched).length() + div + r : div + r;
ans = len < ans ? len : ans;
}
return ans;
}
public static void main(String[] args) {
System.out.println(new P60057().solution("aabbaccc"));
System.out.println(new P60057().solution("ababcdcdababcdcd"));
System.out.println(new P60057().solution("abcabcdede"));
System.out.println(new P60057().solution("abcabcabcabcdededededede"));
System.out.println(new P60057().solution("xababcdcdababcdcd"));
}
}