0

これがばかげた質問ではないことを願っていますが、以下のコードは別の投稿から取得しました。文字列のすべての順列を生成するだけです。私がやりたいのは、それを変更して、すべての順列が配列リストに追加されるようにすることですが、できれば簡単で明白な解決策を見つけるのに苦労しています。誰かがこれを簡単に見て、私が間違っていることを説明できますか? 文字列の順列を取得して配列リストを作成したいだけです。それだけです。

public class UserInput {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter Word: ");
    List<String> inputList = new ArrayList<String>();
    String input = scan.next();
    permutation(input);

            //Error occurs here
    inputList.addAll(permutation(input));

}

public  static void permutation(String str) { 
    permutation("", str);
 }

 private static void permutation(String prefix, String str) {   
    int n = str.length();
    if (n == 0) System.out.println(prefix);
    else {
        for (int i = 0; i < n; i++)
           permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n));
    }
}

}

4

3 に答える 3

1

順列を出力する代わりに、リストに追加できます。

import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;

public class UserInput {
private static List<String> inputList;
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter Word: ");
    inputList = new ArrayList<>();
    String input = scan.next();
    permutation(input);

   System.out.println(inputList.toString());

}

public  static void permutation(String str) { 
    permutation("", str);
 }

 private static void permutation(String prefix, String str) {   
    int n = str.length();
    if (n == 0) inputList.add(prefix);
    else {
        for (int i = 0; i < n; i++)
           permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n));
    }
}
}
于 2013-06-06T21:11:05.807 に答える