golang
func reverseWords(s string) string {
var ss []string
word := -1
for i, c := range s {
if c != ' ' {
if word == -1 {
word = i
}
} else {
if word != -1 {
ss = append(ss, s[word:i])
word = -1
}
}
}
if word != -1 {
ss = append(ss, s[word:])
}
for i, j := 0, len(ss)-1; j > i; i, j = i+1, j-1 {
ss[i], ss[j] = ss[j], ss[i]
}
return strings.Join(ss, " ")
}