Napisałem metodę rekursywną, która pobiera wszystkie możliwe kombinacje znaków ze znaków w ciągu znaków. Mam też metody do niego dostęp i zwróci listę combo:Metoda rekursywna działa w java z konsolą, ale nie z Androidem
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);
}
Podczas testowania go w Javie, to biegł bez wad. Z jakiegoś powodu, kiedy używam go w Androidzie, lista jest wypełniona odpowiednią liczbą elementów, ale każdy element jest taki sam. Na przykład dla słowa "tutaj" zwraca listę wypełnioną "eerh".
Jaka jest definicja 'removeChar()'? – Eric
@Eric Przepraszamy, edytujemy ponownie. – Wilson