题目描述 :请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str,int length) {//思路就是计算出替换后的字符串的长度,利用两个指针,
//一个指向就字符串的末尾,一个指向新字符串的末尾
// 进而从后向前面遍历,这样子节约时间,移位的效率高,
//因为没有做多余的移位操作;
if(str==NULL||length<=0)
return;
int originalLength=0;
int newLength=0;
int blankNum=0;
int i=0;
while(str[i]!='\0')//如果用*str计算字符串长度,程序运行结果不正确,为什么??
{
originalLength++;
if(str[i]==' ')
blankNum++;
i++;
}
newLength=originalLength+2*blankNum;
if(newLength>length)
return;
int indexOriginal=originalLength;
int indexNew=newLength;
while(indexOriginal>=0&&indexNew>indexOriginal)
{
if(str[indexOriginal]==' ')
{
str[indexNew--]='0';
str[indexNew--]='2';
str[indexNew--]='%';
}
else
str[indexNew--]=str[indexOriginal];
indexOriginal--;
}
}
};