func reverseWords(s string) string { beg, end, n := 0, 0, len(s) res := make([]byte, n) for end < n { for beg = end; beg < n && s[beg] == ' '; beg++ { res[beg] = ' ' } for end = beg + 1; end < n && s[end] != ' '; end++ { } for l, r := beg, end-1; l <= r; l, r = l+1, r-1 { res[l], res[r] = s[r], s[l] } } return string(res) }