您的位置:首页 > Web前端

剑指offer第二题:替换空格结题报告

2017-08-16 16:43 471 查看


题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。


分析:

完成题目功能很简单,但要考虑时间复杂度和空间复杂度,特殊情况处理等,首先计算处理后字符串的长度,然后从后往前遍历处理,遇到空格替换并移动尾指针,否则不替换,替换过程如下图所示,时间复杂度为O(n)。




代码:

class Solution {
public:
void replaceSpace(char *str,int length) {
if(str == NULL) return;
char * p = str;
int len = strlen(str), blan
4000
kNum = 0;
while(*p != '\0'){
if(*p == ' ')
blankNum++;
p++;
}
if(blankNum == 0) return;
int newLen = len + (blankNum<<1);
char * tail = str + newLen;
while(p >= str){
if(*p == ' '){
*tail-- = '0';
*tail-- = '2';
*tail-- = '%';
}else{
*tail-- = *p;
}
p--;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: