Tôi đã viết một phương thức đệ quy nhận tất cả các kết hợp ký tự có thể có từ các ký tự trong một chuỗi. Tôi cũng có phương pháp truy cập và trả lại danh sách các combo:Phương thức đệ quy hoạt động trong java với giao diện điều khiển, nhưng không phải với android
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);
}
Khi thử nghiệm trong Java, nó không có lỗi. Vì một số lý do, khi tôi sử dụng nó trong Android, danh sách được điền với số lượng phần tử chính xác, nhưng mọi phần tử đều giống nhau. Ví dụ, đối với từ "here", nó trả về một danh sách chứa đầy "eerh".
Định nghĩa của 'removeChar()' là gì? – Eric
@Eric Xin lỗi, đã chỉnh sửa lại. – Wilson