Use Vec<char> instead of String until the end, in order to append more cleanly and then reverse at the end
into String.

Clean up String creation by using String::from_chars.

Note use of move_iter.