mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Merge pull request #2117 from 615lyw/master
151.翻转字符串里的单词 新增使用了移除元素思想的 Go 版本
This commit is contained in:
@ -467,9 +467,57 @@ class Solution:
|
||||
return " ".join(words)
|
||||
```
|
||||
|
||||
|
||||
Go:
|
||||
|
||||
版本一:
|
||||
|
||||
```go
|
||||
func reverseWords(s string) string {
|
||||
b := []byte(s)
|
||||
|
||||
// 移除前面、中间、后面存在的多余空格
|
||||
slow := 0
|
||||
for i := 0; i < len(b); i++ {
|
||||
if b[i] != ' ' {
|
||||
if slow != 0 {
|
||||
b[slow] = ' '
|
||||
slow++
|
||||
}
|
||||
for i < len(b) && b[i] != ' ' { // 复制逻辑
|
||||
b[slow] = b[i]
|
||||
slow++
|
||||
i++
|
||||
}
|
||||
}
|
||||
}
|
||||
b = b[0:slow]
|
||||
|
||||
// 翻转整个字符串
|
||||
reverse(b)
|
||||
// 翻转每个单词
|
||||
last := 0
|
||||
for i := 0; i <= len(b); i++ {
|
||||
if i == len(b) || b[i] == ' ' {
|
||||
reverse(b[last:i])
|
||||
last = i + 1
|
||||
}
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
|
||||
func reverse(b []byte) {
|
||||
left := 0
|
||||
right := len(b) - 1
|
||||
for left < right {
|
||||
b[left], b[right] = b[right], b[left]
|
||||
left++
|
||||
right--
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
版本二:
|
||||
|
||||
```go
|
||||
import (
|
||||
"fmt"
|
||||
|
Reference in New Issue
Block a user