541.reverse-string-ii.go 355 B

12345678910111213141516171819
  1. func reverseStr(s string, k int) string {
  2. runes := []rune(s)
  3. n := len(s)
  4. beg, end := 0, k-1
  5. for beg < n {
  6. reverse(runes, n, beg, end)
  7. beg, end = beg+2*k, end+2*k
  8. }
  9. return string(runes)
  10. }
  11. func reverse(runes []rune, n int, l int, r int) {
  12. if n <= r {
  13. r = n - 1
  14. }
  15. for ; l < r; l, r = l+1, r-1 {
  16. runes[l], runes[r] = runes[r], runes[l]
  17. }
  18. }