Pregunta de entrevista de Roche

Q: Given a string, define an algorithm to generate all possibilities of permutation.