459. 重复的子字符串
思路1:
我自己理解的是如果s不包含重复子串,那么s自己就是一次重复的子串,那么把s + s去头去尾中就一定不包含s自己。如果s包含重复子串,那么在s + s去头去尾中就一定能找到s自己
代码实现:
class Solution {
public boolean repeatedSubstringPattern(String s) {
String str = s + s;
return str.substring(1, str.length() - 1).contains(s);
}
}
思路2(暴力):
第一层循环的i为子字符串的长度,所以第二层for循环 j = i,j此时就是第二个子字符串的开头,判断s.charAt(j) != s.charAt(j - i)即可
代码实现:
class Solution {
public boolean repeatedSubstringPattern(String s) {
int n = s.length();
//i表示子字符串长度
for (int i = 1; i <= n / 2; i++) {
if (n % i == 0) {
boolean match = true;
for (int j = i; j < n; j++) {
if (s.charAt(j) != s.charAt(j - i)) {
match = false;
break;
}
}
if (match) {
return true;
}
}
}
return false;
}
}