获取所有唯一的子字符串

我正在开发一个程序,用于计算给定输入字符串的所有可能的不同连续子字符串。

这是我的程序:

public int getAllUniqueSubset(String str) {
        Set<String> set = new HashSet<String>();
        for (int i = 0; i < str.length(); i++) {
            for (int j = 0; j < str.length() - i; j++) {
                String elem = str.substring(j, j + (i+1));
                if (!set.contains(elem)) {
                    set.add(elem);
                }
            }
        }
        return set.size();
    }

现在,当我几天前在一次在线考试中使用此功能时,由于输入字符串的长度最多为10的幂5,因此它失败并出现超时错误。

Also similar question is asked in this post - finding all distinct substring of a string also, I used same answer.

解决该程序的正确方法是什么?

评论