替换空格问题

题目描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解题思路:先进行一趟扫描,记录原数组长度,找出空格并计数;然后计算替换后数组长度;最后采用自后向前插入方法填充,遇到空格就替换,非空格原样拷贝。

c++代码:

class Solution {
public:
    void replaceSpace(char *str, int length) {
        if (!str || length <= 0)
            return;

        int oldsize = 0, newsize = 0, count = 0;

        for (int i = 0; str[i] != '\0'&& i != length; ++i)
        {
            ++oldsize;
            if (str[i] == ' ')
            {
                ++count;
            }
        }  

        newsize = oldsize + 2 * count;

        if (newsize > length)
            return;

        for (int i = newsize, j = oldsize; i >= j && j >= 0; )
        {
            if (str[j] != ' ')
            {
                str[i--] = str[j--];
            }
            else
            {
                str[i--] = '0';
                str[i--] = '2';
                str[i--] = '%';
                --j;
            }

        }
    }
};

猜你喜欢

转载自blog.csdn.net/qq_38216239/article/details/80720631
今日推荐