java中的递归字谜
我在实现在给定字符串中查找字谜的算法时遇到困难。下面的方法没有返回正确的输出。例如,给定单词“abc”,它返回[abc,bc,c,bc,bc,c]。当它真的应该是[abc,bac,bca,acb,cab,acb]java中的递归字谜,java,list,recursion,arraylist,Java,List,Recursion,Arraylist,我在实现在给定字符串中查找字谜的算法时遇到困难。下面的方法没有返回正确的输出。例如,给定单词“abc”,它返回[abc,bc,c,bc,bc,c]。当它真的应该是[abc,bac,bca,acb,cab,acb] private List<String> anagramizeRecursive(String word) { if(word.length() == 0) { return null; } else { for(in
private List<String> anagramizeRecursive(String word) {
if(word.length() == 0) {
return null;
}
else {
for(int i = 0; i < word.length()-1; i++) {
unfiltered.add(word.substring(i));
anagramizeRecursive(word.substring(i+1));
unfiltered.add(word.substring(i+1));
}
}
return unfiltered;
}
private List anagramizerescursive(字符串字){
if(word.length()==0){
返回null;
}
否则{
for(int i=0;i
对于原始字符串中的每个字符,您希望将该字符移到前面,然后将其添加到由其余字符串生成的所有字谜中
List<String> anagramRecursive(String word)
result = empty list
if word.isEmpty() result.add("")
else
for each character c in word
for each item in anagramRecursive(word-c)
result.add(c + item)
return result
List anagramRecursive(字符串字)
结果=空列表
if word.isEmpty()结果.add(“”)
其他的
对于word中的每个字符c
对于anagramRecursive(word-c)中的每个项目
结果。添加(c+项)
返回结果
构造递归还有很多其他方法,但这与您已有的方法最为相似。From
私有静态无效置换(字符串候选,字符串剩余)
{
if(剩余.length()==0){
系统输出打印项次(候选);
}
对于(int i=0;i
未筛选的列表在哪里被实例化?您期望的输出是什么?@JorgeCampos它是一个类变量它是一个数组列表strings@Masud它缺少前面有a的字谜,我假设因为bc和c是重复的,你确定你在试图找到字谜吗?如果是这样,您可能需要沿着递归帧传递一些列表。要做到这一点,我需要将word转换为字符数组并循环遍历每个字符吗?
private static void permutations(String candidate, String remaining)
{
if (remaining.length() == 0) {
System.out.println(candidate);
}
for (int i = 0; i < remaining.length(); i++)
{
String newCandidate = candidate + remaining.charAt(i);
String newRemaining = remaining.substring(0,i) + remaining.substring(i + 1);
permutations(newCandidate, newRemaining);
}
}
public static void main(String[] args)
{
String s = "ABC";
permutations("", s);
}