题目
请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”
思路
- 从后往前进行复制
- 注意内存覆盖,要判断出数组是否能够容纳下替换后的字符串
代码
#include <iostream>
using namespace std;
/**
* length为字符数组string的总容量
*/
void replaceBlank(char string[], int length)
{
if(string == NULL || length <= 0) return;
int oldLength = 0;
int spaceNum = 0;
for(int i = 0;string[i] != '\0'; i++) {
oldLength++;
if(string[i] == ' ')
spaceNum++;
}
cout<<oldLength<<endl;exit;
int newLength = oldLength + spaceNum*2;
if(newLength > length) return;
int indexOfOld = oldLength;
int indexOfNew = newLength;
while(indexOfNew > indexOfOld && indexOfOld >= 0) {
if(string[indexOfOld] == ' ') {
string[indexOfNew--] = '0';
string[indexOfNew--] = '2';
string[indexOfNew--] = '%';
}
else {
string[indexOfNew--] = string[indexOfOld];
}
indexOfOld--;
}
}
int main() {
char s[50] = "hello world my name is baba";
replaceBlank(s, sizeof(s)/sizeof(char));
cout<<s<<endl;
}