CC150 1.3 ReplaceSpaces

来源:互联网 发布:mac air怎么清理内存 编辑:程序博客网 时间:2024/06/10 02:41
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;                }            }        }


0 0