//5_替换空格
//时间复杂度O(n)
#include<iostream>
#include<string>
void repalceBlank(char str[]);
int main()
{
using std::cin;
using std::cout;
using std::endl;
using std::string;
char str1[] = "We are happy!";
repalceBlank(str1);
cout << str1 << endl;
std::cin.get();
return 0;
}
void repalceBlank(char str[])
{
if (str == nullptr)
return;
int orignLength = 0;
int blankNum = 0;
int i = 0;
while (str[i] != '\0')
{
++orignLength;
if (str[i]==' ')
{
++blankNum;
}
++i;
}
int newLength = orignLength + 2 * blankNum;
int indexOfOriginal = orignLength;
int indexOfNew = newLength;
while (indexOfOriginal >= 0 && indexOfNew > indexOfOriginal)
{
if (str[indexOfOriginal]==' ')
{
str[indexOfNew--] = '0';
str[indexOfNew--] = '2';
str[indexOfNew--] = '%';
}
else
{
str[indexOfNew--] = str[indexOfOriginal];
}
--indexOfOriginal;
}
}