Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找给定字符串可能有多少唯一的子字符串_Java_Algorithm - Fatal编程技术网

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)