我一直在考虑串绕的无限包装海峡=“ABCDEFGHIJKLMNOPQRSTUVWXYZ”所以它看起来像 “..zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd ......”和另一个字符串p。独特的子串绕串包装
我需要找出p无限环绕字符串str中存在多少个唯一的非空子字符串p?
For example: "zab"
There are 6 substrings "z", "a", "b", "za", "ab", "zab" of string "zab" in str.
我试图找到p的所有后缀在字符串的特定串联海峡例如说:“abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz”
,一旦我得到一个后缀这是一个以上部分我将其所有子串添加到我的结果中,如下所示:
for (int i=0;i<length;i++) {
String suffix = p.substring(i,length);
if(isPresent(suffix)) {
sum += (suffix.length()*(suffix.length()+1))/2;
break;
} else {
sum++;
}
}
而且我isPresent功能是:
private boolean isPresent(String s) {
if(s.length()==1) {
return true;
}
String main = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde
fghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
return main.contains(s);
}
如果P的长度比isPresent功能假设我假定连接字符串时,我的算法失败!
那么我应该如何找到子字符串,而不管环绕字符串str?这个问题有更好的方法吗?