var strStr = function(haystack, needle) {
let next = getNext(needle)
console.log(next)
let i = 0
let j = 0
while(i<haystack.length){
if(haystack[i]==needle[j]){
i++
j++
}else if(haystack[i]!=needle[j] && j>0){
j = next[j-1]
}else{
i++
}
if(j==needle.length){
return i-j
}
}
return -1
};
function getNext(str){
let next = [0]
let cur = 0
let i = 1
while(i<str.length){
if(str[cur] === str[i]){
cur+=1
next.push(cur)
i++
}else if(str[cur] !== str[i]&&cur==0){
next.push(cur)
i++
}else{
cur = next[cur-1]
}
}
return next
}
var repeatedSubstringPattern = function (s) {
if (s.length === 0)
return false
const getNext = (s) => {
let next = []
let j = 0
next.push(j)
for (let i = 1
while (j > 0 && s[i] !== s[j])
j = next[j - 1]
if (s[i] === s[j])
j++
next.push(j)
}
return next
}
let next = getNext(s)
if (next[next.length - 1] !== 0 && s.length % (s.length - next[next.length - 1]) === 0)
return true
return false
}