我正在尝试用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,但它允许重复使用字母。我想也许我可以修改那个代码来检查这个字符是否已被使用,但是对于带有重复字母的单词,即香蒲,这会变得很难。
任何和所有帮助将不胜感激。我会发布任何代码,如果它有帮助,但上面的链接几乎就像我已经得到。
由于
答案 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")