共计 428 个字符,预计需要花费 2 分钟才能阅读完成。
力扣链接:
https://leetcode-cn.com/probl…
解题思路:
- 这道题如果新增空间,就比较简单
- 如果须要原地替换,那么能够应用两个指针,首先统计有多少个空格,因为每个空格替换后会多进去两个 byte,所以依照这个数字进行扩容,而后从原字符串尾部进行遍历,遇到空格替换填入
func replaceSpace(s string) string {b := []byte(s)
spaceCount := 0
for _, v := range b {
if v == ' ' {spaceCount++}
}
tmpSize := make([]byte, spaceCount * 2) // 每个空格换成 %20 减少两个大小
b = append(b, tmpSize...)
i := len(s) - 1
j := len(b) - 1
for i >= 0 {if b[i] != ' ' {b[j] = b[i]
i--
j--
} else {b[j] = '0'
b[j-1] = '2'
b[j-2] = '%'
j = j-3
i = i-1
}
}
return string(b)
}
正文完