如题:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之
后的字符串为We%20Are%20Happy。
这道题难度不大,替换空格,字符串长度边长,需要知道变多长,这时候需要统计空格个数。知道最终字符串长度后,将源字符串从后往前复制到新字符串对应位置即可。编码的时候需要检查输入参数是否合法。
//计算str长度,然后统计空格个数,计算变换后的字符串长度,重新分配空间
class Solution {
public:
void replaceSpace(char *str,int length) {
int spaceNums = 0, i = 0, newLen;
char *pChar = str;
//特殊情况判断
if (!str || length < 1)
return ;
//统计空格个数
while (*pChar != '\0'){
if (*pChar == ' ')
spaceNums++;
pChar++;
}
//计算新长度
newLen = strlen(str) + 2 *spaceNums;
cout<<"hi"<<endl;
if (!spaceNums || newLen > length)
return ;
i = strlen(str) - 1;
str[newLen--] = '\0';
while (i >= 0){
if (str[i] == ' '){
str[newLen--] = '0';
str[newLen--] = '2';
str[newLen--] = '%';
}else{
str[newLen--] = str[i];
}
i--;
}
return ;
}
};
=============================================================================================
Linux应用程序、内核、驱动、后台开发交流讨论群(745510310),感兴趣的同学可以加群讨论、交流、资料查找等,前进的道路上,你不是一个人奥^_^。