더북(TheBook)

다음은 String.format() 기반 해법이다.

String result = String.format("%0" + 5 + "d", 0)
  .replace("0", TEXT);

다음은 char[] 기반 해법이다.

String result = new String(new char[5]).replace("\0", TEXT);

TIP ≣ 외부 라이브러리 지원을 받으려면 아파치 커먼즈 랭의 StringUtils.repeat()와 구아바의 Strings.repeat()를 활용한다.

같은 부분 문자열로만 이어진 문자열인지 검사하려면 다음 메서드를 사용한다.

public static boolean hasOnlySubstrings(String str) {
  StringBuilder sb = new StringBuilder();

  for (int i = 0; i < str.length() / 2; i++) {
    sb.append(str.charAt(i));
    String resultStr = str.replaceAll(sb.toString(), "");
    if (resultStr.length() == 0) {
      return true;
    }
  }

  return false;
}

위 해법은 주어진 문자열의 절반을 순회하며 StringBuilder에 원래 문자열을 한 문자씩 이어 붙이면서 해당 부분 문자열을 전부 ""로 치환해본다. 치환 결과가 빈 문자열이면 주어진 문자열이 같은 부분 문자열로만 이어졌다는 뜻이다.

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