Io ho provato a scriverlo. Ho usato una delle soluzioni che ho detto, cioè la gestione diretta dei caratteri in uno StringBuffer. Quindi niente numeri, moduli, calcoli, ecc...

Non ho fatto l'input della stringa ... sono pigro (a quest'ora) ... ho messo la stringa "ciao" direttamente nel sorgente. Ma in tutto sono venute fuori solo 40 righe di sorgente.