问题描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
分析
假设原字符串长度为oriLength,先统计字符串中空格数目b_num,可得到替换后的字符串大小应为b_num*2+oriLength,然后进行从后往前进行检测空格,并赋值。
我的提交
class Solution {
public:
void replaceSpace(char *str,int length) {
if(nullptr==str)
return;
int oriLen = 0, destLen = 0, blankNum = 0;
for(int i=0;str[i]!='\0';i++){
if(str[i] == ' ')
++blankNum;
++oriLen;
}
destLen = oriLen + 2*blankNum;
if(destLen>=length)
return;
str[destLen] = '\0';
int destIndex = destLen-1;
int oriIndex = oriLen -1;
while(oriIndex >= 0){
if(str[oriIndex] == ' '){
str[destIndex--] = '0';
str[destIndex--] = '2';
str[destIndex--] = '%';
}
else
str[destIndex--]= str[oriIndex];
--oriIndex;
}
}
};