Wpis z mikrobloga

#java #programowanie #naukaprogramowania #pierwiastekzjava

Generator kombinacji:
Próbuję napisać klasę i w niej metodę, która:
-zwraca String
-z każdym wywołaniem metody zwraca inny String, który różni się od poprzedniego tym, że ostatnia litera jest inkrementowana (powiedzmy, że zakres jest od 'a' do 'z')
-na początku zwraca String długości 1, gdy ostatnia litera jest 'z' to ustawiam ją znów na 'a' i zwiększam długość Stringa o 1 i robię analogicznie z dwoma literami itd.
-ogólny zamysł jest taki, żeby metoda była w stanie zwrócić wszystkie kombinacje danego długości mniejszej lub równej od podanej w argumencie na danym alfabecie.
Przyjmując zakres alfabetu nie a-z ale dla uproszczenia a-c, metoda ta przykładowo dla argumentu 3 zwracałaby w kolejnych wywołaniach następujące Stringi:
a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, aac, aba, abb, abc, aca, acb, acc, baa... itd. aż do ccc

Prosiłbym o pomoc i jakieś wskazówki jak do tego mógłbym się zabrać. Zadanie oczywiście byłoby łatwiejsze, gdyby metoda miała zwracać Stringi tylko określonej długości, wtedy możnaby użyć char[], ale tutaj wydaje mi się to bardziej skomplikowane.
Domyślam się, że trzebaby użyć tutaj klasy StringBuilder która pozwoliłaby mi modyfikować podane wyrazy, bo String na to nie pozwala i tworzyłby kolejno mnóstwo obiektów różniących się literą.
  • 8
@Pierwiastek_z_Czech: Aż sobie spróbuję to zrobić po powrocie z #pracbaza.

Na razie na podstawie przemyśleń i internetów: coś co wygeneruje Ci listę stringów zawierającą tyle liter alfabetu ile mu podasz.

public static List uptoChar(int i) {
char literka = 'a';
List listaLiterek = new LinkedList();
for (int j = 0; j < i; j++) {
listaLiterek.add(String.valueOf(literka));
if (listaLiterek.size() == i) {
break;
}
literka++;
}
return listaLiterek;
}