本文最后更新于:2020年6月27日 晚上
题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。在此字符串上完成替换,空间保证足够。
实现如下:
//"We Are Happy"
//" helloworld"
//""
//" "
class Solution
{
public:
void replaceSpace(char *str, int length)
{
//判断异常情况
if (str == NULL || *str == NULL || length < 0) return;
int i = 0;
int num = 0;
while (i < length)//遍历统计' '个数
{
if (str[i] == ' ') ++num;
++i;
}
i = length - 1;//将i移动到str最后一个字符位置
length = length + num * 2 - 1;//将length移动到替换后最后一个字符位置
while (i >= 0)
{
if (str[i] != ' ')//非' '时正常移动
{
str[length] = str[i];
--length;
}
else
{
length -= 3;//否则将length先前移动三个字节完成替换
str[length + 1] = '%';
str[length + 2] = '2';
str[length + 3] = '0';
}
--i;
}
}
};
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!