那种O(N^2)的算法就不说了,说一下O(N)的~~
Talk is cheap,show you the code~~
#include <iostream>
using namespace std;
/************************************************************************/
/* We are happy--> We%20are%20happy.
/************************************************************************/
//length为字符串数组的总容量
void ReplaceBlank(char string[], int length) {
if (string == NULL || length <= 0) {
return;
}
//originalLength 为字符串string的实际长度
int originalLength = 0;
int numberOfBlank = 0;
int i = 0;
while (string[i] != '\0'){
++originalLength;
if (string[i] == ' ') {
++numberOfBlank;
}
++ i;
}
//newLength 为把空格替换成%20之后的长度
int newLength = originalLength + numberOfBlank * 2;
if (newLength > length) {
return;
}
int indexOfOriginal = originalLength;
int indexOfNew = newLength;
while (indexOfOriginal >= 0 && indexOfNew > indexOfOriginal){
if (string[indexOfOriginal] == ' ') {
string[indexOfNew--] = '0';
string[indexOfNew--] = '2';
string[indexOfNew--] = '%';
}
else {
string[indexOfNew--] = string[indexOfOriginal];
}
--indexOfOriginal;
}
cout << string << endl;
}