Variationen eines Strings - groß/klein

NickJP

Neues Mitglied
Hallo,
ich möchte eine kleine Methode schreiben, die mir zu einem gegebenen String alle Variationen der Groß- bzw. Kleinschreibung wiedergibt.
Zum Beispiel für den String "brot" würde sie mir
{brot, Brot, bRot, brOt, broT, BRot, bROt, brOT, BrOt, bRoT, BroT, BROt, BrOT, BRoT,....}
in einer Collection ausgeben. Da ich mich noch recht schwer mit verschachtelten Schleifen tue wollt ich mal nachfragen ob es dafür vllt sogar schon eine hilfreiche Methode gibt, die Java schon mit liefert. Wäre sau lieb wenn mir da jemand helfen könnte 🙂
 
Davon ausgehend, dass es nur um Strings mit weniger als 32 (oder 64) Zeichen geht:
Code:
int n = Math.pow(2, anzahlZeichen);
for (int i=0; i<n; i++)
{
    if (bit nummer b ist in 'i' gesetzt) mache buchstaben b aus dem String GROSS
    else mache buchstaben b aus dem String klein
}
 
@NickJP:
Wenn es keine hilfreichen Methoden gibt oder man keine kennt, ist es sinnvoll, sich kleine Methoden selbst zu schreiben. Das könnte dann beispielsweise so aussehen:
Java:
public List<String> permute(String s) {
    int capacity = (int) Math.pow(2, s.length());
    List<String> result = new ArrayList<String>(capacity);
    String lower = s.toLowerCase();
    result.add(lower);
    return permute(result, lower, 0);
}
    
private List<String> permute(List<String> result, String s, int i) {
    String u = upper(s, i);
    result.add(u);
    if (i + 1 < s.length()) {
        permute(result, s, i + 1);
        permute(result, u, i + 1);
    }
    return result;
}

private String upper(String s, int i) {
    String a = s.substring(0, i);
    String b = s.substring(i, i + 1);
    String c = s.substring(i + 1, s.length());
    return a + b.toUpperCase() + c;
}
 
Zuletzt bearbeitet:

Zurück
Oben