Java 如何生成符号组合?

Java 如何生成符号组合?,java,arrays,algorithm,Java,Arrays,Algorithm,我输入了char[][]。我需要生成可能的组合,其中每个字符数组提供对应位置的符号。例如: char[][] symbols = new char[][] { {'M', 'm'}, {'o', '0'}, {'i', 'l', '|', 'e'}, {'s', '$'} }; 应使用此输入数据生成: Mois Moi$ Mols Mol$ MoLs ... m0e$ 我很难在数组

我输入了
char[][]
。我需要生成可能的组合,其中每个字符数组提供对应位置的符号。例如:

    char[][] symbols = new char[][] {
            {'M', 'm'},
            {'o', '0'},
            {'i', 'l', '|', 'e'},
            {'s', '$'}
    };
应使用此输入数据生成:

Mois
Moi$
Mols
Mol$
MoLs
...
m0e$

我很难在数组中设置条件,以便从正确的数组中更新正确的符号并生成字符串。

您可以通过如下定义计算机函数来完成此操作:

void compute(String combo, Integer i) {
    if ( i == symbols.length ) {
        System.out.println( combo );
    }
    else {
        for ( int j = 0; j < symbols[ i ].length; j++ ) {
            compute( combo + symbols[ i ][ j ], i + 1 );
        }
    }
}
this.compute( "", 0 );

使用for循环的非常不平滑但有效的解决方案:

public static void main(String... args) throws ParseException {
    char[][] symbols = new char[][] { { 'M', 'm' }, { 'o', '0' }, { 'i', 'l', '|', 'e' }, { 's', '$' } };
    String s = "1234";
    for (int i = 0; i < symbols[0].length; i++) {
        s = s.replace(s.charAt(0), symbols[0][i]);
        for (int j = 0; j < symbols[1].length; j++) {
            s = s.replace(s.charAt(1), symbols[1][j]);
            for (int k = 0; k < symbols[2].length; k++) {
                s = s.replace(s.charAt(2), symbols[2][k]);
                for (int l = 0; l < symbols[3].length; l++) {
                    s = s.replace(s.charAt(3), symbols[3][l]);
                    System.out.println(s);
                }
            }
        }
    }

}
publicstaticvoidmain(String…args)抛出异常{
char[][]symbols=新的char[][{{'M',M'},{'o',0'},{'i',l','|','e'},{'s','$'};
字符串s=“1234”;
对于(int i=0;i<符号[0]。长度;i++){
s=s.replace(s.charAt(0),符号[0][i]);
对于(int j=0;j<符号[1]。长度;j++){
s=s.替换(s.字符(1),符号[1][j]);
对于(int k=0;k<符号[2]。长度;k++){
s=s.替换(s.字符(2),符号[2][k]);
对于(int l=0;l<符号[3]。长度;l++){
s=s.替换(s.字符(3),符号[3][l]);
系统输出打印项次;
}
}
}
}
}
正如您所看到的,这将快速增长,这取决于您最终的字符串长度。因此,其他解决方案更适合它。我强烈建议使用@alirabiee answer

查找“笛卡尔积”