mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Merge pull request #2355 from Freshield/master
新增:增加字符串章节 -> 替换数字的GO语言双指针实现
This commit is contained in:
@ -183,6 +183,54 @@ func main(){
|
|||||||
fmt.Printf(string(strByte))
|
fmt.Printf(string(strByte))
|
||||||
}
|
}
|
||||||
````
|
````
|
||||||
|
Go使用双指针解法
|
||||||
|
````go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func replaceNumber(strByte []byte) string {
|
||||||
|
// 查看有多少字符
|
||||||
|
numCount, oldSize := 0, len(strByte)
|
||||||
|
for i := 0; i < len(strByte); i++ {
|
||||||
|
if (strByte[i] <= '9') && (strByte[i] >= '0') {
|
||||||
|
numCount ++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 增加长度
|
||||||
|
for i := 0; i < numCount; i++ {
|
||||||
|
strByte = append(strByte, []byte(" ")...)
|
||||||
|
}
|
||||||
|
tmpBytes := []byte("number")
|
||||||
|
// 双指针从后遍历
|
||||||
|
leftP, rightP := oldSize-1, len(strByte)-1
|
||||||
|
for leftP < rightP {
|
||||||
|
rightShift := 1
|
||||||
|
// 如果是数字则加入number
|
||||||
|
if (strByte[leftP] <= '9') && (strByte[leftP] >= '0') {
|
||||||
|
for i, tmpByte := range tmpBytes {
|
||||||
|
strByte[rightP-len(tmpBytes)+i+1] = tmpByte
|
||||||
|
}
|
||||||
|
rightShift = len(tmpBytes)
|
||||||
|
} else {
|
||||||
|
strByte[rightP] = strByte[leftP]
|
||||||
|
}
|
||||||
|
// 更新指针
|
||||||
|
rightP -= rightShift
|
||||||
|
leftP -= 1
|
||||||
|
}
|
||||||
|
return string(strByte)
|
||||||
|
}
|
||||||
|
|
||||||
|
func main(){
|
||||||
|
var strByte []byte
|
||||||
|
fmt.Scanln(&strByte)
|
||||||
|
|
||||||
|
newString := replaceNumber(strByte)
|
||||||
|
|
||||||
|
fmt.Println(newString)
|
||||||
|
}
|
||||||
|
````
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user