Merge pull request #196 from hk27xing/hk27xing-add

添加0459.重复的子字符串Java版本
This commit is contained in:
Carl Sun
2021-05-19 23:37:44 +08:00
committed by GitHub

View File

@ -149,9 +149,38 @@ public:
## 其他语言版本
Java
```java
class Solution {
public boolean repeatedSubstringPattern(String s) {
if (s.equals("")) return false;
int len = s.length();
// 原串加个空格(哨兵)使下标从1开始这样j从0开始也不用初始化了
s = " " + s;
char[] chars = s.toCharArray();
int[] next = new int[len + 1];
// 构造 next 数组过程j从0开始(空格)i从2开始
for (int i = 2, j = 0; i <= len; i++) {
// 匹配不成功j回到前一位置 next 数组所对应的值
while (j > 0 && chars[i] != chars[j + 1]) j = next[j];
// 匹配成功j往后移
if (chars[i] == chars[j + 1]) j++;
// 更新 next 数组的值
next[i] = j;
}
// 最后判断是否是重复的子字符串,这里 next[len] 即代表next数组末尾的值
if (next[len] > 0 && len % (len - next[len]) == 0) {
return true;
}
return false;
}
}
```
Python