生成Java字符串的所有排列,包括较小的单词,并排除重复项

时间:2014-05-05 03:39:28

标签: java string logic character

我正在尝试用Java编写一个代码,它允许我采用像“cat”这样的随机字符串,并生成所有可能的字母组合,包括更短的字符串。

在另一个标记为副本(Generating all permutations of a given string)的问题上提供的答案不回答这个问题。没有一个答案包括较小的单词。

例如: c,ca,ct,cat,cta,a,ac,at,act,atc,t,ta,tc,tac,tca。 (我认为这就是全部)

我在SO中已经看到了几个答案,但是我找到了重复使用的所有答案。 喜欢 ccc,cca,cct,cac,caa,cat

这个答案似乎是最接近的All possible words,但它允许重复使用字母。我想也许我可以修改那个代码来检查这个字符是否已被使用,但是对于带有重复字母的单词,即香蒲,这会变得很难。

任何和所有帮助将不胜感激。我会发布任何代码,如果它有帮助,但上面的链接几乎就像我已经得到。

由于

1 个答案:

答案 0 :(得分:0)

你走了!

public static void printAnagrams(String prefix, String word) {
    if (word.length() <= 1) {
        System.out.println(prefix + word);
    } else {
        for (int i = 0; i < word.length(); i++) {
            String cur = word.substring(i, i + 1);
            String before = word.substring(0, i);
            String after = word.substring(i + 1);

            printAnagrams(prefix + cur, before + after);
        }
    }
}

称之为printAnagrams("", "cat")

相关问题