2

整数の配列があり、Java を使用してこれらの要素のすべての可能な順列を見つける必要があります。そのため、最後に配列を含む配列があり、それぞれが元の単一配列の順列です。任意のサイズの配列で機能する必要があります。

文字列に対してこれを行うことができますが、配列が私をつまずかせています。私の要素は整数であるため、単純な文字列メソッドを使用することはできません。たとえば、int が 1、2、14 の場合、文字列 1214 を並べ替えることになります。文字列を操作して並べ替え、取得することは可能でしょうか?どういうわけかフィルタリングして、最後に必要な順列?

私は周りを見回していくつかのアルゴリズムを見つけたようですが、実際にはそれらはすべて説明がほとんどまたはまったくない単なるコードの連なりであるため、理解できません。誰かがこれのアルゴリズム、説明されているアルゴリズムを持っていますか!?

文字列のアルゴリズムは次のとおりです。

static String[] getPermutations( String str ) { 
List<String> perms = new ArrayList<>();
    permute( "", str, perms );
    String[] list = perms.toArray( new String[ perms.size() ] );
    return list;
}

// This function recursively calls itself
static void permute( String prefix, String str, List<String> perms ) {
        int n = str.length();
        if ( n == 0 ) {
        perms.add(prefix);
        } else {
            for ( int i = 0; i < n; i++ ) {
            permute( prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n), perms );
        }
    }
}
4

1 に答える 1