golang 笔试题 按单词反转字符串

// 按单词顺序反转字符串
func Test2() {
	revertPart := func(src []byte, start, end int) {
		for start < end {
			src[start], src[end] = src[end], src[start]
			start++
			end--
		}
	}
	revert := func(src []byte) {
		// 整体反
		revertPart(src, 0, len(src)-1)
		// 单词反

		start, end := 0, 0
		for start < len(src) {
			// 找start
			for start < len(src) && src[start] == ' ' {
				start++
			}
			if start >= len(src) {
				break
			}
			// 找end
			end = start
			for end < len(src) && src[end] != ' ' {
				end++
			}
			if end >= len(src) {
				end = end - 1
			}
			if src[end] == ' ' {
				revertPart(src, start, end-1)
			} else {
				revertPart(src, start, end)
			}
			start = end + 1
		}

	}
	src := []byte("hello world what a good day")
	fmt.Printf("原始字符串:%s\n", string(src))
	revert(src)
	fmt.Printf("结果字符串:%s\n", string(src))
}