#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);
}
剑指Offer:面试题4 替换空格
最新推荐文章于 2019-11-13 17:11:20 发布