递归回溯以创建给定字符串的排列

时间:2014-12-02 18:50:53

标签: java recursion data-structures avl-tree recursive-backtracking

我目前正致力于编程分配,用户输入一个单词

即。 "即"

并且程序应该返回可以从给定字符串

生成的所有有效单词

即。 [那,帽子,在]

我遇到的问题是应该使用检查前缀是否有效的递归方法创建生成的单词。

即。如果给定的单词是" kevin"一旦程序尝试组合" kv"它应该知道没有单词以kv开头并尝试下一个组合以节省时间。

目前我的代码只创建了所有排列,当输入大于8个字母时,这会占用相对较长的时间。

protected static String wordCreator(String prefix, String letters) {
    int length = letters.length();

        //if each character has been used, return the current permutation of the letters
        if (length == 0) {
            return prefix;
        }
        //else recursively call on itself to permute possible combinations by incrementing the letters
        else {
            for (int i = 0; i < length; i++) {
                words.add(wordCreator(prefix + letters.charAt(i), letters.substring(0, i) + letters.substring(i+1, length)));
            }
        }
        return prefix;
    }

如果有人能帮助我解决这个问题,我将不胜感激。我还使用AVL树来存储需要验证的字典单词。

0 个答案:

没有答案