优化 0151.翻转字符串里的单词Go示例

This commit is contained in:
Nihilism
2023-07-14 13:56:34 +08:00
committed by GitHub
parent 9c9ba938f2
commit 0129bde1d8

View File

@ -546,26 +546,28 @@ func reverseWords(s string) string {
b = b[:slowIndex] b = b[:slowIndex]
} }
//2.反转整个字符串 //2.反转整个字符串
reverse(&b, 0, len(b)-1) reverse(b)
//3.反转单个单词 i单词开始位置j单词结束位置 //3.反转单个单词 i单词开始位置j单词结束位置
i := 0 i := 0
for i < len(b) { for i < len(b) {
j := i j := i
for ; j < len(b) && b[j] != ' '; j++ { for ; j < len(b) && b[j] != ' '; j++ {
} }
reverse(&b, i, j-1) reverse(b[i:j])
i = j i = j
i++ i++
} }
return string(b) return string(b)
} }
func reverse(b *[]byte, left, right int) { func reverse(b []byte) {
for left < right { left := 0
(*b)[left], (*b)[right] = (*b)[right], (*b)[left] right := len(b) - 1
left++ for left < right {
right-- b[left], b[right] = b[right], b[left]
} left++
right--
}
} }
``` ```