给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。
class Solution { public boolean repeatedSubstringPattern(String s) { int len=s.length(); if(s.length()==0) return false; int next[]=new int[len]; getNext(next,s); if(next[len-1]!=-1&&len%(len-(next[len-1]+1))==0) { return true; } return false; } public void getNext(int next[],String s){ next[0]=-1; int j=-1; for(int i=1;i=0&&s.charAt(i)!=s.charAt(j+1)){ j=next[j]; } if(s.charAt(i)==s.charAt(j+1)){ j++; } next[i]=j; } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)