关于golang:Leetcode专题字符串剑指-Offer-05替换空格

力扣链接:
https://leetcode-cn.com/probl…
解题思路:

  1. 这道题如果新增空间,就比较简单
  2. 如果须要原地替换,那么能够应用两个指针,首先统计有多少个空格,因为每个空格替换后会多进去两个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)
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理