Reverse words
Write a function that takes a string containing words (one or more sentences) and returns a string containing the words in reverse order.
Examples
(reverse-words "my name is Eric.") ;;=> "Eric. is my name"
(reverse-words "hello") ;;=> "hello"
(reverse-words "I love you") ;;=> "you love I"
Note: Words are characters separated by whitespace.
Thanks to this site for the problem idea, where it is rated Very Hard in Java. The problem has been modified.
Please submit your solutions as comments on this gist.
To subscribe: https://ericnormand.me/newsletter
Here is a little variant which preserves white space between tokens.
EDIT @jonasseglare, I like your solution which also preserves spacing, but has a simpler approach (no corner cases, unlike mine).
Also thanks to @miner for the rseq comment, I started using it. From the documentation, it looks like the trade-off b/w
reverse
/rseq
is convenience vs performance, asreverse
seems to allow anyseqable
including regular vanilla maps, andrseq
requires asorted
structure (actually areversible?
, but most/allsorted?
implementations also implement clojure.lang.Reversible). Fun stuff!