美文网首页
牛客网剑指Offer——替换空格

牛客网剑指Offer——替换空格

作者: 星空_ad64 | 来源:发表于2018-04-28 16:35 被阅读0次

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

    解题思路:
    首先计算str现有长度和修改后的长度,然后利用两个指针,从后往前赋值。

    class Solution {
    public:
        void replaceSpace(char *str,int length) {
            if( str == NULL )
                return;
            int originalLen = 0; //原有长度
            int blankNum = 0; //空格个数
            
            for( int i=0;str[i]!='\0';i++ )
            {
                originalLen++;
                if( str[i] == ' ' )
                    blankNum++;
            }
            int len = originalLen + blankNum * 2; //修改后长度
            if( len+1 > length ) //判断不能超过最大长度
                return;
            
            char *p1 = str + originalLen; //修改前str的末尾,指向'\0'
            char *p2 = str + len; //修改后str的末尾,指向'\0'
            while( p2 > p1 ) //从后往前赋值
            {
                if( *p1 == ' ' )
                {
                    *p2 = '0';
                    p2--;
                    *p2 = '2';
                    p2--;
                    *p2 = '%';
                    p2--;
                }
                else
                {
                    *p2 = *p1;
                    p2--;
                }
                p1--;
            }
            
            return;
        }
    };
    

    相关文章

      网友评论

          本文标题:牛客网剑指Offer——替换空格

          本文链接:https://www.haomeiwen.com/subject/uogglftx.html