java每个数组的组合

时间:2014-03-01 17:40:59

标签: java arrays numbers combinations digits

我正在编写一个必须找到所有组合的程序:

String[] combination = new String[]{"123,"12","34"};

申请必须返回:

113
114
123
124
213
214
223
224
313
314
323
324

每9个字符的最大数组中最多有81个元素与它们组合。 因此,第一个数字必须来自com[0],第二个数字必须来自com[1],依此类推。

寻求帮助!

1 个答案:

答案 0 :(得分:0)

这里有一种方法可以做到这一点(也许是一个有点'丑陋的黑客'的地方)!显然,它需要被推广以处理不同的输入字符串,但这应该是微不足道的。

编辑:我做了一些改动,所以它更接近动态,但用户输入处理仍有待完成:目前只有一个'输入'数组,如你所见。

package combinations;

import java.util.ArrayList;

public class Combinations {

    static String[] combination = {"123","12","34"};

    public static void main(String[] args) {

        Combinations combinations = new Combinations();

        ArrayList<String> string = new ArrayList<String>();
        ArrayList<String> input = new ArrayList<String>();

        input = combinations.stringDecomposition(combination[0]);
        string = combinations.combinations(input,combination[1]);

        // next for loop starts from index i = 2 since result of combining first 2 elements
        // has just been calculated in the last line 

        for(int i = 2; i<combination.length; i++)
        {
            string = combinations.combinations(string,combination[i]);
        }

        for(int i = 0; i<string.size(); i++)
        {
            System.out.println(string.get(i));
        }

    }


        public ArrayList<String> combinations(ArrayList<String> input0, String input1){

            ArrayList<String> result = new ArrayList<String>();

                int jlength = input1.length();

                for(int i=0; i<input0.size(); i++)
                {

                        for(int j=0; j<jlength; j++)
                        {

                            StringBuilder stringBuilder = new StringBuilder();
                            stringBuilder.append(input0.get(i));
                            stringBuilder.append(input1.charAt(j));
                            result.add(stringBuilder.toString());   
                        }

                }

            return result;

        }

        public ArrayList<String> stringDecomposition(String in){

            ArrayList<String> result = new ArrayList<String>();

            for(int i =0;i<in.length();i++){
                StringBuilder s = new StringBuilder();
                s.append(in.charAt(i));
                result.add(s.toString());               
            }

            return result;

        }

}