您的位置:首页 > 职场人生

剑指Offer:面试题4 替换空格

2015-09-09 10:45 375 查看
#include<stdio.h>
/*剑指Offer:面试题4 替换空格*/
/*
题目:请实现一个函数,把字符串中的每一个空格替换成“%20”
例如:当字符串string内容为:"hello world !"时,执行完函数后
string内容为:“hello%20world%20!”
算法思想:
1.用“%20”替换‘ ’后,字符串长度必然发生变化。
因此,首先应遍历一边字符串,统计原字符串中空格的个数,从而计算出
变换后的字符串字符个数。
2.然后采用从后向前的方法去遍历字符串,如果是空格则替换成要替换的字符,并将其
放进重新计算的字符串长度的数组内,如果不是空格则放入重新计算的字符串长度的数组内。
*/
void replaceBank(char string[], int length)
{
if (string == NULL && length <= 0)
return;
int orignalLength = 0;
int blankSize = 0;
int i = 0;
while (string[i] != '\0')
{
orignalLength++;
if (string[i] == ' ')
{
blankSize++;
}
i++;
}
int newLength = orignalLength + blankSize * 2;
if (newLength > length)
{
return;
}

while (orignalLength > 0 && newLength > orignalLength)
{
if (string[orignalLength] == ' ')
{
string[newLength--] = '0';
string[newLength--] = '2';
string[newLength--] = '%';
}
else
{
string[newLength--] =string[orignalLength];
}
orignalLength--;
}

}

void main()
{
const int length = 100;
char string[length] = "hello world !";
replaceBank(string, length);
printf("%s \n",string);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题