设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
你的程序还需要返回被替换后的字符串的长度。
注意事项:
如果使用 Java 或 Python, 程序中请用字符数组表示字符串。
样例:
对于字符串”Mr John Smith”, 长度为 13
替换空格之后,参数中的字符串需要变为”Mr%20John%20Smith”,并且把新长度 17 作为结果返回。
挑战:
在原字符串(字符数组)中完成替换,不适用额外空间
class Solution {
public:
/**
* @param string: An array of Char
* @param length: The true length of the string
* @return: The true length of new string
*/
int replaceBlank(char *str, int length) {
// Write your code here
if (str == NULL && length <= 0)
return 0;
int oriLen = 0;
int num = 0;
int i = 0;
while (str[i] != '\0')
{
++oriLen;
if (str[i] == ' ')
++num;
++i;
}
int newLen = oriLen + 2 * num;
int newPos = newLen;
int oriPos = oriLen;
while (oriPos >= 0 && newPos > oriPos)
{
if (str[oriPos] == ' ')
{
str[newPos--] = '0';
str[newPos--] = '2';
str[newPos--] = '%';
}
else
str[newPos--] = str[oriPos];
--oriPos;
}
return newLen;
}
};