새로운 토큰이 등장했다면 직전까지 등장한 문자열을 이용하여 압축 문자열을 구성해줍니다. 이때 등장 횟수 count는 2 이상일 때만 압축 문자열에 포함되고, 압축 문자열을 구성한 후에는 현재 검사한 token부터 다시 셀 수 있도록 lastcount를 업데이트해야 한다는 것을 잊지 마세요.

    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() 메서드가 완성되었습니다.

     

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.