Мне нужно создать все возможные строки из 2d-массива, чтобы первый символ начинался с charArray[0]
, второй символ - от charArray[1]
... и конечный символ исходит от charArray[keyLength-1]
.Рекурсивно создавая строки из 2-мерного массива символов
Пример:
вход:
char[][] charArray =
{{'m','M','L','S','X'}
{'e','E','o','N','Z'}
{'o','G','F','r','Y'}
{'D','H','I','J','w'}};
выход:
{meoD, meoH, meoI,..., XZYJ, XZYw} //in an Array or ArrayList
я имел рабочий раствор, который builts дерево с каждого символа в charArray[0]
в качестве корня, и он сделал построение первой строки глубины, но у JVM закончилась нехватка памяти для charArray, длина которой меньше 12. Обычно я беру итеративный подход, но длина charArray (т. длина строки ключа) определяется во время выполнения, и я хотел бы найти более полное решение, чем писать оператор switch на длину строки ключа и вручную выписывать циклы для конечного числа длин строк.
Я застрял в этой небольшой части своей программы дольше, чем я хотел бы признать, поэтому любая помощь будет принята с благодарностью!
Было бы легко понять, если вы здесь разместите свой код. – Maverick
, даже если charArray определяется во время выполнения, у вас есть поле .length для массивов – hhafeez
@hhafeez Да, но проблема возникает из-за попытки обработки символов в массиве. Лучшее итеративное решение, которое я могу выяснить, потребует, чтобы строка внутри финального вложенного цикла выглядела так: keyArrayList.add (charArray [0] .charAt (a) + charArray [1] .charAt (b) + .... + charArray (keyLength-1) .charAt (x). То есть мне нужно будет вручную написать инструкцию charAt для каждого charArray [i]. Это, очевидно, представляет проблему, если длина charArray сильно различается. Если вы можете думать о другой способ сделать это, я был бы рад услышать это. – mjf