2015-04-25 34 views
0

我在执行算法时找不到给定字符串中的字母。下面的方法不会返回正确的输出。例如,给定单词“abc”它返回[abc,bc,c,bc,bc,c]。当它应该仅仅是[ABC,BAC,BCA,ACB,驾驶室,ACB]java中的递归agram

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; 
} 
+3

“未过滤”列表在哪里被实例化? –

+0

您的预期产量是多少? – Masudul

+0

@JorgeCampos它是一个类变量它是一个字符串数组列表 –

回答

0

对于原始字符串中的每个字符,你想这个角色移动到前面,然后将其添加到所有由其余弦线制成的字形。

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 

还有很多其他的方法来构建递归,但这是最像你已经。

+0

要做到这一点,我是否必须将单词转换为字符数组并循环遍历每个字符? –