func reverseStr(s string, k int) string { runes := []rune(s) n := len(s) beg, end := 0, k-1 for beg < n { reverse(runes, n, beg, end) beg, end = beg+2*k, end+2*k } return string(runes) } func reverse(runes []rune, n int, l int, r int) { if n <= r { r = n - 1 } for ; l < r; l, r = l+1, r-1 { runes[l], runes[r] = runes[r], runes[l] } }