我写了一个递归方法,它从字符串中的字符中获取所有可能的字符组合。我还有一种方法可以访问它并返回组合列表:
public static void uns(String word, StringBuilder s, List combos)
{
for(char c: word.toCharArray())
{
s.append(c);
if(word.length() != 1)
{
uns(removeChar(word, c),s,combos);
}
else
{
combos.add(s.toString());
}
s.deleteCharAt(s.toString().length()-1);
}
}
public static List getCombinations(String word)
{
List<String> combinations = new ArrayList<String>();
uns(word,new StringBuilder(),combinations);
return combinations;
}
public static String removeChar(String s, char c)
{
int index = s.indexOf(c);
return s.substring(0,index)+s.substring(index+1);
}
在 Java 中对其进行测试时,它运行时没有任何缺陷。出于某种原因,当我在 Android 中使用它时,列表中填充了正确数量的元素,但每个元素都是相同的。例如,对于单词“here”,它返回一个填充有“eerh”的列表。