LeetCode 459. Repeated Substring Pattern
考点 | 难度 |
---|---|
String | Easy |
题目
Given a string s
, check if it can be constructed by taking a substring of it and appending multiple copies of the substring together.
思路
因为substring的长度必须能整除string整个的长度,所以先找到可能的substring长度(从string.length/2
开始向下递减)。
对于每一个可能的substring长度,先取第一个substring,再判断后面的每一个substring是不是和第一个相同。如果不同跳出循环,返回false
。如果判断到最后一个,返回true
。
答案
public boolean repeatedSubstringPattern(String s) {
int len = s.length();
for (int i=len/2 ; i>=1 ; i--) {
if (len%i == 0) {
int m = len/i;
String subS = s.substring(0,i);
int j;
for(j=1; j<m; j++) {
if(!subS.equals(s.substring(j*i,i+j*i))) {
break;
}
}
if(j==m)
return true;
}
}
return false;
}