剑指offer程序员

剑指offer 替换空格

2017-10-21  本文已影响0人  云胡同学

题目描述

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

思路

从头到尾扫描字符串,每次碰到空格字符后,将之后的字符向后移动两个位置,然后再把%20填入进去。时间复杂度是
n^2,复杂度太高。

代码

class Solution {
public:
    void replaceSpace(char *str,int length) {
        int i, pastlength = 0, afterlength, k, spacelength = 0;
        i = 0;
        while(str[i] != '\0')
        {
            pastlength++;//替换前长度
            if(str[i] == ' ')
                spacelength++;
            i++;
        }
        afterlength = pastlength + spacelength * 2; //替换之后字符串的长度
        if(afterlength>length)  
            return;  
        int j=afterlength;  
        for(i=pastlength;i>=0 && j > i;i--)  
        {  
            if(str[i]!=' ')  
                str[j--]=str[i];  
            else  
            {  
                str[j--]='0';  
                str[j--]='2';  
                str[j--]='%';  
            }  
        }  
    }
};
上一篇 下一篇

猜你喜欢

热点阅读