要求: 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; } } }