새로운 토큰이 등장했다면 직전까지 등장한 문자열을 이용하여 압축 문자열을 구성해줍니다. 이때 등장 횟수 count는 2 이상일 때만 압축 문자열에 포함되고, 압축 문자열을 구성한 후에는 현재 검사한 token부터 다시 셀 수 있도록 last와 count를 업데이트해야 한다는 것을 잊지 마세요.
for (String token : split(source, length)) {
if (token.equals(last)) {
count++;
} else {
if (count > 1) builder.append(count);
builder.append(last);
last = token;
count = 1;
}
}
이렇게 for 문을 나오면 아직 마지막 토큰은 last에 담긴 채로 압축 문자열에 포함되지 않은 상태입니다. 따라서 압축 문자열을 구성하는 로직을 for 문 이후에 1회 더 추가해야 합니다.
for (String token : split(source, length)) {
if (token.equals(last)) {
count++;
} else {
if (count > 1) builder.append(count);
builder.append(last);
last = token;
count = 1;
}
}
if (count > 1) builder.append(count);
builder.append(last);
이렇게 compress() 메서드가 완성되었습니다.