请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are
Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路:
遍历字符串,计算出空格的个数,然后扩容字符串,使指针指向扩容后的大小的位置(一个空格替换成三个字符,所以应该原大小加2*空格个数)。然后使用前后指针,一个指向源字符串末尾,一个指向修改后的末尾,依次拷贝,遇到空格则替换。(将末尾的‘\0’一并拷贝进来)
class Solution {
public:
void replaceSpace(char *str,int length) {
int spaceNum = 0;
char* ptr = str;
while (*ptr) {
if (isspace(*ptr)) {
spaceNum++;
}
ptr++;
}
char* f1 = str + length;
char* f2 = str + length + 2 * spaceNum;
while (f1 >= str && f2 >= str) {
if (isspace(*f1)) {
*f2-- = '0';
*f2-- = '2';
*f2-- = '%';
f1--;
}
else {
*f2 = *f1;
f2--;
f1--;
}
}
}
};