题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路
根据题目给的接口,字符串需要用char *,因此需要移动和插入(若为string则可以使用替换replace或插入insert函数完成)。
因此首先第一轮循环统计空格个数,计算新字符串的长度,若长度大于给定数组长度,则无法替换。
进行第二次循环,从后往前,若原数组中字符不是空格,则赋值到新字符串位置,若为空格则在新字符串位置插入“%20”。
程序
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str == NULL || length <= 0)
return;
int count = 0, len = 0, i = 0;
while(str[i] != '\0'){
if(str[i]==' ')
count++;
len++;
i++;
}
int newlength = len + count * 2;
if(length < newlength)
return;
while(len >= 0 && newlength >= 0)
{
if(str[len] == ' ')
{
str[newlength--] = '0';
str[newlength--] = '2';
str[newlength--] = '%';
}
else
str[newlength--] = str[len];
len--;
}
}
};
本文介绍了一种将字符串中的空格替换为“%20”的算法实现。通过两次遍历,先统计空格数量确定新字符串长度,再从后向前逐个替换。适用于固定长度的字符数组。
145

被折叠的 条评论
为什么被折叠?



