Ich habe diese Zuordnung, die mich braucht, um eine zuvor komprimierte Zeichenfolge zu dekomprimieren. Beispiele hierfür wäreRecursiv dekomprimieren eines Strings
i4a --> iaaaa
q3w2ai2b --> qwwwaaibb
3a --> aaa
Hier ist, was ich bisher geschrieben:
public static String decompress(String compressedText)
{
char c;
char let;
int num;
String done = "";
String toBeDone = "";
String toBeDone2 = "";
if(compressedText.length() <= 1)
{
return compressedText;
}
if (Character.isLetter(compressedText.charAt(0)))
{
done = compressedText.substring(0,1);
toBeDone = compressedText.substring(1);
return done + decompress(toBeDone);
}
else
{
c = compressedText.charAt(0);
num = Character.getNumericValue(c);
let = compressedText.charAt(1);
if (num > 0)
{
num--;
toBeDone = num + Character.toString(let);
toBeDone2 = compressedText.substring(2);
return Character.toString(let) + decompress(toBeDone) + decompress(toBeDone2);
}
else
{
toBeDone2 = compressedText.substring(2);
return Character.toString(let) + decompress(toBeDone2);
}
}
}
Meine Rückgabewerte sind absolut horrend.
"ab" yields "babb" somehow.
"a" or any 1 letter string string yields the right result
"2a" yields "aaaaaaaaaaa"
"2a3b" gives me "aaaabbbbbbbbbbbbbbbbbbbbbbbbbbaaabbbbaaaabbbbbbbbbbbbbbbbbbbbbbbbbb"
Der einzige Ort, wo ich einen Fehler sehen kann wäre wahrscheinlich der letzte Abschnitt sonst, da ich nicht ganz sicher war, was auf einmal tut die Zahl 0 erreicht und ich muß mit der Rekursion auf dem Schreiben aufhören Danach. Ansonsten kann ich nicht wirklich ein Problem sehen, das solch schreckliche Ergebnisse liefert.
Warum machst du das mit Rekursion? –
Dies ist eine gute Zeit, um zu lernen, wie man debuggt. – shmosel