Leetcode Note: Go - Reverse String II

Reverse String II - LeetCode
https://leetcode.com/problems/reverse-string-ii/

  • Go 言語で取り組んだメモ

所感

  • string s を k int 値単位で反転して文字列を return する

回答

Reverse String II - LeetCode
https://leetcode.com/problems/reverse-string-ii/solution/

[Golang] Runtime 0 ms solution - LeetCode Discuss
https://leetcode.com/problems/reverse-string-ii/discuss/373835/Golang-Runtime-0-ms-solution

func reverseStr(s string, k int) string {
	res := []byte(s)
	for i := 0; i < len(res); i = i + 2*k {
		if i+k < len(res) {
			reverseK(res[i : i+k])
		} else {
			reverseK(res[i:])
		}
	}
	return string(res)
}

// reverse slice
func reverseK(b []byte) {
	left, right := 0, len(b)-1
	for left < right {
		b[left], b[right] = b[right], b[left]
		left, right = left+1, right-1
	}
}
  • string を byte 配列に変換
  • for loop でカウンタの更新に k を使用して、この単位でのルーチンを構築
  • 文字列を反転する関数を別途実装して適宜呼び出し