替换空格
题目:
请实现一个函数,把字符串中的每个空格替换成“20%”。例如输入“we are happy.”,则输出“we20%are20%happy.”。
本题的解决方法还有一个限制,即在当前字符串上进行替换操作,不能申请额外内存。所以,前提该字符串数组的总长度要比替换后的长度大,不然替换失败。
#include<iostream>
using namespace std;
void ReplaceBlank(char str[],int length)
{
if (NULL == str || length <= 0)
return;
int originalLen = 0;
int numOfBlank = 0;
int i = 0;
while ('\0' != str[i])
{
originalLen++;
if (' ' == str[i])
numOfBlank++;
i++;
}
int indexOriginal = originalLen;
int newIndex = originalLen + 2 * numOfBlank;
if (newIndex >= length)
return;
while (indexOriginal>=0 && indexOriginal<newIndex)
{
if (' ' == str[indexOriginal])
{
str[newIndex--] = '%';
str[newIndex--] = '0';
str[newIndex--] = '2';
}
else
str[newIndex--] = str[indexOriginal];
indexOriginal--;
}
}
int main()
{
char a[20] = "I love you .";
cout << a << endl;
ReplaceBlank(a,20);
cout << a << endl;
return 0;
}