それはいくつかの順列をプリントアウトしていますが、残りはヌルで、私は理由が分かりません。私はStringへのすべての順列を必要としますが、util.Arraysを除く他のパッケージはインポートできません。助けてください!文字列の順列を作成する私の再帰で何が問題になっていますか?
import java.util.Arrays;
public class DIE
{
public static String[] printPermutations(String s)
{
int l = s.length();
int f = factorial(l);
int count = 0;
String[] array = new String[f];
permute("", s, array, 0);
Arrays.sort(array);
return array;
}
private static String[] permute(String x, String s, String [] array, int count)
{
int l = s.length();
if (l == 0)
{
array[count] = (x + s);
}
for (int i = 0; i < l; i++)
{
permute(x + s.charAt(i), s.substring(0, i) +
s.substring(i +1, s.length()), array, count);
count++;
}
return array;
}
public static int factorial(int l)
{
if (l == 1)
{
return 1;
}
else
{
int result = l * factorial(l - 1);
return result;
}
}
/*
Do not edit anything below this comment.
*/
public static void main(String[] args)
{
String[] permutations = printPermutations(args[0]);
for(String p : permutations)
{
System.out.println(p);
}
}
}
入力のどのような種類です(私見非常に悪いという名前のメソッドは、それがヘルパーメソッドと一緒に順列を作成し、何も出力しません)あなたは与える?私はこのコードが "Fable"、 "Cradle"などの入力に対して適切に動作しているとは思わないので、いくつかの例を投稿してください。 –
私はabc abcdのような単純な文字列を試しています。 –
メインプログラムでは、 forループは配列を出力します。 forループ全体を削除して使用します:System.out.println(順列); –