mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +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)
|
return " ".join(words)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Go:
|
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
|
```go
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
Reference in New Issue
Block a user