题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str,int length) {
int SpaceNum = 0; //空格数量
int OrgStrLen = 0, NewStrLen = 0;
int i, len1, len2;
if (str == NULL || length < 0)
return ;
//记录原始字符串长度和空格数量
for (i = 0; str[i] != '\0'; i++)
{
OrgStrLen++;
if (str[i] == ' ')
SpaceNum++;
}
//记录 空格替换为%20后的新的字符串长度
NewStrLen = OrgStrLen + 2 * SpaceNum;
if(NewStrLen > length)
return ;
str[NewStrLen] = '\0';
//len1、len2为字符串下标
len1 = OrgStrLen - 1;
len2 = NewStrLen - 1;
while(len1 >= 0 && len2 > len1)
{
if (str[len1] == ' ')
{
str[len2--] = '0';
str[len2--] = '2';
str[len2--] = '%';
}
else{
str[len2--] = str[len1];
}
len1--;
}
}
};