题目要求:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
算法思路:
在一个最足够的空间中,先统计字符串中空格的个数,计算出转换完成后的字符串长度,运用双指针从前往后移动,每当指针1遇到空格时,指针2连续三步分别转换成‘0’,‘2’,‘%’,在继续移动,当指针1等于指针2的时候,循环停止。
代码实现:
void replace_Space(char * str, int len)
{
int spacecnt = 0;
char * cur = str;
while (*cur)
{
if (*cur == ' ')
{
spacecnt++;
}
cur++;
}
int newlen = len + spacecnt * 2;
int end1 = len - 1;
int end2 = newlen - 1;
while (end1 != end2)
{
if (str[end1] != ' ')
{
str[end2--] = str[end1--];
}
else
{
str[end2--] = '0';
str[end2--] = '2';
str[end2--] = '%';
end1--;
}
}
//return cur;
}
int main(){
char str[100] = "We Are Happy";
//char *tmp;
int len = strlen(str);
replace_Space(str, len);
printf("%s\n", str);
system("pause");
return 0;
}
代码结果:
We%20Are%20Happy
请按任意键继续. . .