剑指offer2 替换空格

来源:互联网 发布:淘宝手机怎么删除评价 编辑:程序博客网 时间:2024/05/21 11:26
#include "iostream"#include "stdio.h"#include "stdlib.h"#include "string.h"using namespace std;/*思路就是先统计空格数量,每个空格都会替换成%20,多出两个空间,计算出总空间之后.从最后开始读字符串,遇到空格则添加%20,遇到其他字符直接写于相应的位置*//*最开始我的思路是从头开始读取,先将str复制到strtemp中再将str清空,之后从头开始读strtemp,如果遇到空格则写入%20,其他字符则直接写入但最后出现了一个比较奇怪的问题,比如说hello world将空格替换成%20之后后面总会变成hello%20hello world.然后我就无奈了*/class Solution {public:void replaceSpace(char *str,int length) {int i,j;int blackNum = 0;int originLen;originLen = length;if (length <= 0 || str == NULL) return;for(i = 0;i < length;i++){if(str[i] == ' ')blackNum++;}length = length + (blackNum*2) - 1;str[length+1] = '\0';for(i = originLen-1;i>=0;i--){if(str[i] == ' '){str[length] = '0';length --;str[length] = '2';length --;str[length] = '%';length --;continue;}str[length] = str[i];length --;}//puts(str);}};int main(){Solution test;char *str;str[0] = 'h';str[1] = 'e';str[2] = 'l';str[3] = 'l';str[4] = 'o';str[5] = ' ';str[6] = 'w';str[7] = 'o';str[8] = 'r';str[9] = 'l';str[10] = 'd';int length = 11;test.replaceSpace(str,length);return 0;}

0 0
原创粉丝点击