题解 | #替换空格#

替换空格

http://www.nowcoder.com/practice/0e26e5551f2b489b9f58bc83aa4b6c68

package main

import "strings"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @return string字符串
*/
func replaceSpace( s string ) string {
    var str strings.Builder
	
	for i := 0 ; i < len(s) ; i ++ {
		if s[i] != ' ' {
			str.WriteString(s[i:i+1]) //一个字符一个字符地拼接
		} else {
			str.WriteString("%20") //遇到空格时拼接"%20"
		}
	}
	return str.String()
}

使用“+”凭借2给字符串是,会生成一新的字符串,那么就需要开辟一段ixn的空间,新空间的大小是原来字符串的大小之和。 假设一个字符串大小为10byte,拼接1w次,需要申请的内存为: 10 + 2 * 10 + 3 * 10 + ... + 10000 * 10 byte = 500MB

而string.Builder的内存是以倍数申请的。 例如,初始大小为0,当第一次写入大小为10byte的字符串时,则会申请大小为16byte的内存(恰好大于10byte的2的指数),而第二次写入10byte时,内存不够,则申请32byte的内存,第三次写入内存足够,则不申请新的,以此类推。

全部评论

相关推荐

牛客ID:561366855:期望薪资多少?难以相信这简历找不到工作。说明二本电子信息专业想对口就业非常难。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务