我正在编写一个必须找到所有组合的程序:
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]
,依此类推。
寻求帮助!
答案 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;
}
}