// 面试题5:替换空格
// 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,
// 则输出“We%20are%20happy.”。
/*length 为字符数组str的总容量,大于或等于字符串str的实际长度*/
static void replace_blank(std::string& str)
{
uint32_t rawlen = 0;
uint32_t spaces = 0;
for(uint32_t i = 0; str[i] != '\0'; ++i)
{
++ rawlen;
if(str[i] == ' ')
{
++ spaces;
}
}
if(0==spaces)
{
return;
}
/*newLength 为把空格替换成'%20'之后的长度*/
auto newlen = rawlen + spaces * 2;
str.resize(newlen + 1);
for(int r=rawlen, n=newlen; r>-1&&n>-1; r--)
{
if(str[r] == ' ')
{
str[n--] = '0';
str[n--] = '2';
str[n--] = '%';
}
else
{
str[n--] = str[r];
}
}
}