557.reverse-words-in-a-string-iii.go 349 B

123456789101112131415
  1. func reverseWords(s string) string {
  2. beg, end, n := 0, 0, len(s)
  3. res := make([]byte, n)
  4. for end < n {
  5. for beg = end; beg < n && s[beg] == ' '; beg++ {
  6. res[beg] = ' '
  7. }
  8. for end = beg + 1; end < n && s[end] != ' '; end++ {
  9. }
  10. for l, r := beg, end-1; l <= r; l, r = l+1, r-1 {
  11. res[l], res[r] = s[r], s[l]
  12. }
  13. }
  14. return string(res)
  15. }