// 按单词顺序反转字符串
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))
}