LintCode-212.空格替换

空格替换

设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
你的程序还需要返回被替换后的字符串的长度。

注意事项

如果使用 Java 或 Python, 程序中请用字符数组表示字符串。

样例

对于字符串"Mr John Smith", 长度为 13
替换空格之后,参数中的字符串需要变为"Mr%20John%20Smith",并且把新长度 17 作为结果返回。

挑战

在原字符串(字符数组)中完成替换,不适用额外空间

标签

字符串处理 Cracking The Coding Interview

code

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 string[], int length) {
        // Write your code here
        int blank_count = 0;
        int new_length = length;
        int i;
        for(i=0; i<length; i++) {
            if(string[i] == 32) {
                blank_count++;
                new_length += 2;
            }
        }
        for(i=length-1; i>=0; i--) {
            if(string[i] != 32) {
                string[i+blank_count*2] = string[i];
            }
            else {
                string[i]   = '%';
                string[i+1] = '2';
                string[i+2] = '0';
                i+=3;
                blank_count--;
            }
        }
        return new_length;
    }
};
posted @ 2017-05-04 13:37  LiBaoquan  阅读(566)  评论(0编辑  收藏  举报