반응형

 

 

 

 

 

📌 자바 특정 문자열 반복하기

 

파이썬을 접해보았다면  문자열을 반복할 때  "ABC" * 정수  와 같은 코드를 사용한 경험이 있을 것이다.

파이썬과 비슷하게 자바에서는 String클래스의 repeat 메서드를 통해 문자열을 반복할 수 있다.

 

repeat 메서드는 자바 11에서 새롭게 추가된 String 메서드이며, 파라미터로 전달하는 정수만큼 문자열을 반복한다. 또한, 0을 입력할 경우 빈 문자열을 반환하며, 음수를 입력하면 IllegalArgumentExceptionthrow 이 발생한다.

 

repeat의 내부 로직을 살펴보면 Arrays.fill()과 System.arraycopy() 를 통해 문자열을 만들어 반환하며,

반복 횟수를 n 주어진 문자열을 s라 할 때, O(n|s|)의 시간 복잡도를 갖는다.

 

 

 

 

1️⃣ Java 11 이전의 방식

n을 문자열의 반복 횟수, 반복할 문자열을 s라고 할 때 아래와 같다.

 

◾ StringBuilder와 for문을 통한 반복

반복할 횟수만큼 for 루프를 실행하며 각 루프마다 StringBuilder에 주어진 문자열을 추가해준다.

String str = "ab";
StringBuilder sb = new StringBuilder();

for(int i = 0; i < 5; i++) {
	sb.append(str);
}

System.out.println("result : " + sb); // result : ababababab

 

 

Java 1.5

n개의 문자 배열을 String으로 만든 후 각각의 문자를 주어진 문자열로 replace 시킨다.

String repeated = new String(new char[n]).replace("\0", s);

// 예시
String repeated = new String(new char[5]).replace("\0", "ab");
System.out.println(repeated); // ababababab

 

 

◾ Java 7

길이가 n인 문자 포맷의 각 자리를 주어진 문자열로 replace 시킨다.

String.format("%0" + n + "d", 0).replace("0", s);

//예시
String repeated = String.format("%0" + 5 + "d", 0).replace("0", "ab");
System.out.println(repeated); // ababababab

 

 

◾ Java 8

자바8에서 추가된 Collections의 nCopies 메서드를 이용한다.

String.join("", Collections.nCopies(n, s));

// 예시
String repeated = String.join("", Collections.nCopies(5, "ab"));
System.out.println(repeated); // ababababab

 

 

 

2️⃣ Java 11 

repeat 메서드는 자바11에서 추가된 String의 메서드이며 문자열을 반복하는 가장 쉬운 방법이다.

"s".repeat(n);

//예시
String repeated = "ab".repeat(5);
System.out.println(repeated); // ababababab

 

 

 

 

 

 

 

 

📌 참고사이트

JavsString.net :: repeat() Method

 

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기