请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
若只考虑输出替换后的字符串,则只需定义一个新字符串,当原字符串不为空格,push_back该字符,当原字符串为空格,push_back“%20”即可.
class Replacement {
public:
string replaceSpace(string iniString, int length) {
// write code here
string str;
for(int i=0;i<length;i++)
{
if(iniString[i]==' ')
{
str.push_back('%');
str.push_back('2');
str.push_back('0');
}
else
str.push_back(iniString[i]);
}
return str;
}
};
若要在原字符串上进行操作的话,就稍微复杂点,需要先统计空格数,确定替换空格后字符串的大小。然后从尾部开始插入,遇到非空字符,直接插入;遇到空格,依次插入‘0’,‘2’,‘%’;
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str==NULL||length<0) return ;
int oldl=0,spa=0;
int i=0;
while(str[i]!='\0')
{
oldl++;
if(str[i]==' ')
spa++; //记录空格
i++;
}
int newl=oldl+2*spa;
if(newl>length) return ;
while(newl>=oldl&&oldl>=0)
{
if(str[oldl]==' ') //尾插
{
str[newl--]='0';
str[newl--]='2';
str[newl--]='%';
}
else
str[newl--]=str[oldl];
oldl--;
}
}
};
1113

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



