Write a method to replace all spaces in a string with '%20', You may assume that the string has sufficient space at the end to hod the additional characters, and you are given "true" length of the string.
要求: In place, 即不能另外开辟空间;
思路: 从后向前; 优点: in place
步骤:
1 循环,找出空格的个数;据此推算新数组元素的个数
2 实际操作翻转,编辑字符串,看到空格,就替换为%20
C# 代码:
public static void ReplaceSpaces(char[] str, int length)
{
int spaceCount = 0, newLength;
for ( int i = 0; i < length; i++)
{
if (str[i] == ' ')
spaceCount++;
}
newLength = length + spaceCount * 2;
for ( int i = length - 1; i >= 0; i--)
{
if (str[i] == ' ')
{
str[newLength - 1] = '0';
str[newLength - 2] = '2';
str[newLength - 3] = '%';
newLength = newLength - 3;
}
else
{
//复制内容
str[newLength - 1] = str[i];
//指针左移1位
newLength = newLength - 1;
}
}
}