Java 如何另存为ArrayList<;字符串>;,字符串中一组字符的所有可能组合?
如何将字符串中一组字符的所有可能组合保存为ArrayList 你可以在下面看到我的代码。它只打印组合,但不保存所有组合。有什么想法吗Java 如何另存为ArrayList<;字符串>;,字符串中一组字符的所有可能组合?,java,Java,如何将字符串中一组字符的所有可能组合保存为ArrayList 你可以在下面看到我的代码。它只打印组合,但不保存所有组合。有什么想法吗 public class All_Possible_Combinatons { static String combinations(char[] sequence, char[] data, int start, int end, int index, int r) { if (index == r) {
public class All_Possible_Combinatons
{
static String combinations(char[] sequence, char[] data, int start, int end,
int index, int r)
{
if (index == r)
{
for (int j = 0; j < r; j++)
// = data[j];
System.out.print(data[j] + " ");
System.out.println();
}
for (int i = start; i <= end && ((end - i + 1) >= (r - index)); i++)
{
data[index] = sequence[i];
combinations(sequence, data, i + 1, end, index + 1, r);
}
return null;
}
public static void main(String args[])
{
char[] sequence = { '0','1','2'/*,'3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[',']','^','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' */};
System.out.print("The combinations are: ");
// printCombinations(sequence, sequence.length);
int N=sequence.length;
char[] data = new char[N];
for (int r = 0; r < sequence.length; r++)
combinations(sequence, data, 0, N - 1, 0, r);
}
公共类所有可能的组合
{
静态字符串组合(char[]序列、char[]数据、int start、int end、,
整数索引,整数r)
{
如果(索引==r)
{
对于(int j=0;j
这可能不是最有效的方法,但请尝试一下:
List<String> list = new ArrayList<>();
int[] a = {0,1,2};
for(int i: a){
list.add(i+"");
}
for(int times = 0; times < a.length; times++){
String first = a[times]+"";
for(int i = 0; i< a.length; i++){
String temp = first + i;
list.add(temp);
}
}
for(String s: list){
System.out.print(s + " ");
}
使用当前方法。您需要切换方法以正确完成此操作 我尝试使用您当前的方法
import java.util.ArrayList;
导入java.util.List;
公共类JavaApplication47
{
公共静态void main(字符串[]args)
{
[3,”5,“6”,“7,”7,”,”7,“7,”7,”,”,”,”7,“7,“8,”,”,”,”7,“7,”,”,”7,“8,”,”,”,”8,“9,”,”,”,”7,”,”,”,”,”,”,”,”9,”,”,”,”,”,”,”他们,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,‘D’、‘E’、‘F’、‘G’、‘H’、‘I’、‘J’、‘K’、‘L’、‘M’、‘N’、‘O’、‘P’、‘Q’、‘R’、‘S’、‘T’、‘U’、‘V’、‘W’、‘X’、‘Y’、‘Z’*/};
系统输出打印(“组合为:”);
//打印组合(顺序、顺序、长度);
列表=新的ArrayList();
int N=序列长度;
字符[]数据=新字符[N];
对于(int r=0;r您需要在arraylist或数字中存储字符吗?@Blasanka无所谓。两者都将转换为字符串。'1'
和1
都将成为“1”
。好的。谢谢!我也考虑过了。您的代码正确吗?我运行了它,没有得到1、2、3的组合。好的,我更改了(int r=0;rfor(int r=0;r)这项工作,但不太好。因为像这样保存:1 2 0 1 0 2 1 2你说像这样保存是什么意思?我想要这个数组列表:'0','1','2','00','01','02','10','11','12','20','21','22',…但是你的代码给出了:'0','1','2','0','0','0','01','1'。。。。
0 1 2 00 01 02 10 11 12 20 21 22
import java.util.ArrayList;
import java.util.List;
public class JavaApplication47
{
public static void main(String[] args)
{
char[] sequence = { '0','1','2'/*,'3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[',']','^','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' */};
System.out.print("The combinations are: ");
// printCombinations(sequence, sequence.length);
List<String> list = new ArrayList();
int N=sequence.length;
char[] data = new char[N];
for (int r = 0; r <= sequence.length; r++)
{
list.add(combinations(sequence, data, 0, N - 1, 0, r));
}
System.out.println(list.size());
for (String combo : list)
{
System.out.println(combo);
}
}
static String combinations(char[] sequence, char[] data, int start, int end, int index, int r)
{
StringBuilder stringbuilder = new StringBuilder();
if (index == r)
{
StringBuilder stringbuilder2 = new StringBuilder();
for (int j = 0; j < r; j++)
{
//System.out.print(data[j] + " ");
stringbuilder2.append(data[j]).append(" ");
}
//System.out.println();
return stringbuilder2.append(" - ").toString();
}
for (int i = start; i <= end && ((end - i + 1) >= (r - index)); i++)
{
data[index] = sequence[i];
stringbuilder.append(combinations(sequence, data, i + 1, end, index + 1, r));
}
return stringbuilder.toString();
}
}
import java.util.ArrayList;
import java.util.List;
public class JavaApplication47
{
public static void main(String[] args)
{
char[] sequence = { '0','1','2'/*,'3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[',']','^','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' */};
System.out.print("The combinations are: ");
// printCombinations(sequence, sequence.length);
List<String> list = new ArrayList();
int N=sequence.length;
char[] data = new char[N];
for (int r = 0; r <= sequence.length; r++)
{
list.addAll(combinations(sequence, data, 0, N - 1, 0, r));
}
for (String combo : list)
{
System.out.println(combo);
}
System.out.println("list size: " + list.size());
}
static List<String> combinations(char[] sequence, char[] data, int start, int end, int index, int r)
{
List<String> list = new ArrayList();
if (index == r)
{
List<String> tempList = new ArrayList();
StringBuilder stringbuilder2 = new StringBuilder();
for (int j = 0; j < r; j++)
{
stringbuilder2.append(data[j]).append(" ");
}
tempList.add(stringbuilder2.toString());
return tempList;
}
for (int i = start; i <= end && ((end - i + 1) >= (r - index)); i++)
{
data[index] = sequence[i];
list.addAll(combinations(sequence, data, i + 1, end, index + 1, r));
}
return list;
}
}