Создание строк с предопределенными условиямиJAVA

Программисты JAVA общаются здесь
Anonymous
Создание строк с предопределенными условиями

Сообщение Anonymous »

Есть ли в Java что-нибудь, что противоречит регулярным выражениям?
Моя задача: учитывая определенную общую длину строки и каждая позиция может состоять только из предопределенных определенных символов, генерировать все возможные строки.
Для примера: я хочу создать все строки длиной 3, где позиции определяются как

Код: Выделить всё

[ABC][123][XYZ]
Это означает, что первая позиция может быть только A, B или C, вторая позиция — одним из чисел от 1 до 3 и так далее. Таким образом, допустимыми строками будут

Код: Выделить всё

A1X
A1Y
A1Z
A2X
A2Y
A2Z
...
...
C3Z
Для длины три я, конечно, могу использовать вложенный цикл. Моя проблема в том, что я заранее не знаю, какой длины должна быть строка или сколько допустимых символов имеет каждая позиция. Есть идеи?
Код для длины 3 и трех возможных символов в каждой позиции:

Код: Выделить всё

public static void main(String[] args) {
String[] first  = {"A", "B", "C"};
String[] second = {"1", "2", "3"};
String[] third  = {"X", "Y", "Z"};

List result = createStrings(first, second, third);

result.forEach(System.out::println);
}

static List createStrings(String[] ... strs) {
String[] first  = strs[0];
String[] second = strs[1];
String[] third  = strs[2];

List result = new ArrayList();
for (int i = 0; i < first.length; i++) {
for (int j = 0; j < second.length; j++) {
for (int k = 0; k < third.length; k++) {
result.add(first[i] + second[j] + third[k]);
}
}
}
return result;
}
Мне нужно что-то гибкое, работающее со всеми входами. Или способ динамического создания вложенного цикла в зависимости от strs.length, который определяет, сколько циклов мне нужно.

Подробнее здесь: https://stackoverflow.com/questions/787 ... conditions

Вернуться в «JAVA»