问题源于一道编程题:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
第一次写的代码是
class Solution {
public:
void replaceSpace(char *str,int length) {
//从后向前遍历,有多少个count 长度增加count*2
int count=0;
for(int i=0;i<length;i++)
{
if(str[i]==' ')
count++;
}
for(int i=length-1;i>=0;i--)
{
if(str[i]!=' ')
{
str[i+count*2]=str[i];
}
else
{
//遇到“ ”,则前面的count应该减少1
count--;
str[i+count*2]='%';
str[i+count*2+1]='2';
str[i+count*2+2]='0';
}
}
}
};
第二次的代码是:
class Solution {
public:
string replaceSpace(string s) {
if(s.length()==0) return s;
int len=s.length();
int count=0;
for(int i=0;i<len;i++)
{
if(s[i]==' ')
count++;
}
s.append(2*count, '1');
for(int i=len-1;i>=0;--i)
{
if(s[i]!=' ')
{
s[i+count*2]=s[i];
}
else
{
count--;
s[i+count*2]='%';
s[i+count*2+1]='2';
s[i+count*2+2]='0';
}
}
return s;
}
};
第二次的代码开始没有加这句:
s.append(2*count, '1');
想问char* 是可以自动增加内存,string要自己分配吗?
有点弄不清楚内存的问题,求指教。