题目描述
将一个字符串中的空格替换成 “%20”。
Input:
“We Are Happy”
Output:
“We%20Are%20Happy”
C++求长度相关知识
在C/C++中常用的获取字符串长度或者字符串数组长度的函数有:sizeof(), length(), strlen(), size().其中strlen(str)和str.length()和str.size()都可以用来求字符串的长度。str.length()和str.size()是用于求string类对象的成员函数,strlen(str) 是用于求字符串数组的长度,其参数是char*。
strlen()和sizeof()的区别。
strlen(char*):函数求是字符串的实际长度,它可以用来获取动态实际字符数组的长度,是从开始到遇到第一个“\0”,如果只是定义没有赋予初始值,这个结果是不确定的,它会从数组的首地址开始一直找下去,直到遇到”\0”停止查找。
sizeof(): 求所占总空间的字节数,静态的,跟初始状态字符数组的大小有关系,大小等于初始时字符数组的大小或者等于初始时字符数组的大小+1。
在C++中,如果定义的是字符串数组的话,那么如果想获取数组的长度,只能用sizeof(数组名),而不能用strlen(str)。
解题思路
这一题我不知道是否可以直接修改char数组,使增加长度。做了两种方法都不对,因此直接看了答案。第一种是牛客网上的形式,根据其给出的函数包装形式来写成答案。比较好理解。
思路为:先记录空格数目,确定新的数组长度,再从后向前进行替换。
1 | class Solution { |