1 | 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 |
思路分析:
一、暴力法:
经过分析我们不难发现
1.s的循环节一定是s字符串的前缀字符串
2.s的长度一定是循环节的n倍
3.最长循环节的长度不会超过总长的一半(可用于优化暴力法)
1 | public static boolean repeatedSubstringPattern(String s) { |
二、暴力法的优化:
其实我们并不需要取截取字符串,我们可以用双指针用来确定字符串的头尾
1 | public static boolean repeatedSubstringPattern(String s) { |
三、构建双字符串的方法:两行代码搞定
1 | public static boolean repeatedSubstringPattern(String s) { |