É basicamente o que eu fiz aqui, mas sem as variáveis intermediárias :-)
Quanto a ser performático, talvez não seja muito porque precisa gerar várias strings, pode ser que um loop simples imprimindo um caractere por vez seja ligeiramente mais rápido. Mas em um código tão pequeno provavelmente não faz tanta diferença.