Leetcode Java Repeated Substring Pattern
업데이트:
문제
코드
class Solution {
public boolean repeatedSubstringPattern(String s) {
int length = s.length();
for (int index = 1; index <= length / 2; index++) {
if (length % index == 0) {
String pattern = s.substring(0, index);
boolean isRepeated = true;
for (int curr = length - index; curr > 0; curr -= index) {
if (!pattern.equals(s.substring(curr, curr + index))) {
isRepeated = false;
break;
}
}
if (isRepeated) {
return true;
}
}
}
return false;
}
}
결과
설명
-
문자열 s가 반복된 문자열로 이루어져 있는지 검증하는 문제이다.
-
length s의 길이를 에 저장할 변수로, s의 길이로 초기화한다.
- 반복되는 문자열의 최대 길이는 해당 문자열의 절반이므로, 1부터 $\frac{length}{2}$ 이하까지 index를 증가시키며 아래를 반복한다.
- length를 index로 나눈 나머지가 0이 아니면 다음 반복을 진행한다.
- pattern에 s의 처음부터 index번째 자리 이전까지 잘라 반복이 되는 패턴으로 저장한다.
- isRepeated를 true로 초기화한다.
- curr를 $length - index$부터 0초과까지 curr를 index만큼 감소시키며 아래의 반복을 수행한다.
- pattern이 s의 curr번째 자리부터 $curr + index$ 번째 자리 이전까지 잘라 동일한지 검증하여, 동일하지 않은 경우 isRepeated를 false로 변경하고 반복을 종료한다.
- 반복이 완료되고 isRepeated가 true인 경우 반복이 성립되므로, true를 주어진 문제의 결과로 반환한다.
- 반복이 완료되면 false를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기