Java 查找给定字符串可能有多少唯一的子字符串
我试图找出给定字符串可能有多少不同的子字符串。我想出了以下代码:Java 查找给定字符串可能有多少唯一的子字符串,java,algorithm,Java,Algorithm,我试图找出给定字符串可能有多少不同的子字符串。我想出了以下代码: public static long process(String s) { long count = 0; for (int i = s.length() - 1; i > 0; i--) { Set<String> set = new HashSet<>(); for (int j = 0; j < s.length() - i + 1; j+
public static long process(String s) {
long count = 0;
for (int i = s.length() - 1; i > 0; i--) {
Set<String> set = new HashSet<>();
for (int j = 0; j < s.length() - i + 1; j++) {
String a = s.substring(j, i + j);
if (!set.contains(a))
set.add(a);
}
count += set.size();
}
count++;
return count;
}
公共静态长进程(字符串s){
长计数=0;
对于(int i=s.length()-1;i>0;i--){
Set=newhashset();
对于(int j=0;j
我使用以下代码获取了此代码:。现在,当我把它用于大的输入时,我得到了一些错误,比如对于一些输入,程序没有在时间限制内运行
如何进一步改进此代码
我甚至尝试过这种方法,但同样的问题是,它失败了,出现了超时错误。您需要的只是计数?如果我想对了:给定的字符串长度n包含n个长度为1的子字符串,n-1个长度为2的子字符串,n-2个长度为3的子字符串。。。到长度为n的1个子串。感觉子字符串的数量应该是(n^2+n)/2。为了好玩,请尝试使用Java 6运行。@markspace和当前的重复检查?FWIW-当前版本甚至不会给出正确的答案。
set
变量应该在循环之外(然后count+=…
变得不必要)。如果(!set.contains(a))set.add(a),则代码>可以只是设置。添加(a)代码>