剑指 Offer 05. 替换空格


前言

记录自己刷题思路,时常复习。


一、字符串

剑指 Offer 05. 替换空格
在这里插入图片描述

二、解题思路

go中 string类型可以看作为一个字节序列,可使用string[i]来索引string种的第i个字节

s := "we are happy"
fmt.Printf("type: %T; value:%v", s[0], s[0])

输出为

type: uint8; value:119

在go中byte是内置类型uint8的一个别名。
通过go内置函数strings.Count获取当前字符串中空格的个数
因此我们可以初始化一个长度 = 需要变换的字符串长度 + 该字符串中空格个数*2的byte切片 ss
遍历该字符串s,当遍历到空格时,则在ss的当前位置开始依次填入‘%’、‘2’、‘0’,如果不是空格则正常赋值

go代码如下:

func replaceSpace(s string) string {
   spaceTimes := strings.Count(s, " ")
	var l int = len(s)
	var ss = make([]byte, l+spaceTimes*2, l+spaceTimes*2)
	var j int = 0
	for i := 0; i < l; i++ {
		if s[i] == 32 {
			ss[j], ss[j+1], ss[j+2] = '%', '2', '0'
			j += 3
		} else {
			ss[j] = s[i]
			j += 1
		}

	}
	return string(ss)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值