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)
}