Tôi đang tạo từ unscrambler trong java. Ngay bây giờ tôi có một chương trình có thể in tất cả các sắp xếp lại của 3 chữ cái được chọn từ một từ có 3 chữ cái trở lên (không lặp lại). Ví dụ: nếu tham số là abcd, nó sẽ in:Số biến số lồng nhau cho vòng lặp
[[abc, abd, acb, acd, adb, adc, bac, bad, bca, bcd, bda, bdc, cab, cad , cba, cbd, cda, cdb, dab, dac, dba, dbc, dca, dcb]]
Tôi đang điền danh sách mảng 2D với các hoán vị. Ngay bây giờ mảng 2D chỉ có một mảng bên trong nó, chứa các hoán vị cho 3 chữ cái. Tôi muốn mảng 2D có mảng cho phép đọc 1 chữ cái, 2 chữ cái, 3 chữ cái, v.v., dừng ở độ dài của từ. Vấn đề là tôi cần một số lượng biến được lồng vào nhau để thực hiện điều này. Đối với các hoán vị 3 chữ cái, tôi có 3 lồng nhau cho các vòng lặp. Mỗi một chu kỳ thông qua các chữ cái trong tham số.
public static void printAllPermuations(String word)
{
int len = word.length();
ArrayList<String> lets = new ArrayList<String>();
//this array of letters allows for easier access
//so I don't have to keep substringing
for (int i = 0; i < len; i++)
{
lets.add(word.substring(i, i + 1));
}
ArrayList<ArrayList<String>> newWords = new ArrayList<ArrayList<String>>();
newWords.add(new ArrayList<String>());
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len; j++)
{
for (int k = 0; k < len; k++)
{
if (i != j && i != k && j != k)
//prevents repeats by making sure all indices are different
{
newWords.get(0).add(lets.get(i) + lets.get(j) + lets.get(k));
}
}
}
}
System.out.println(newWords);
}
Tôi đã xem các bài đăng khác và tôi nghe nói rằng đệ quy có thể giải quyết vấn đề này. Tôi không biết làm thế nào tôi sẽ thực hiện điều đó, mặc dù. Và tôi cũng đã thấy một số giải pháp phức tạp mà tôi không hiểu. Tôi yêu cầu giải pháp đơn giản nhất, cho dù nó có liên quan đến đệ quy hay không.
nếu (i! = J && i! = K && j! = K) điều này có vẻ là sai.There không có biến j và k local trong loopFunction() – Algorithmist
Woops nhận được một bit copy/paste happy. Ngoài ra lợi ích này sẽ cho tối ưu đệ quy đuôi (cho Java 8) hoặc nó nên đi xuống một cấp độ hơn? – DrYap
Bạn đã viết mã 'newWords.get (...). Add (...);' Trong phần add(), tôi cần phải có một bộ sưu tập các chữ cái. Tôi không biết cách thu thập tất cả các chữ cái. Bất cứ ai có thể giúp tôi với điều đó? – Muuz