• 替换空格


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

     题意:注意这里有两种意思,一是可以创建新的字符串,二是在原字符串上修改

    思路:第一种情况,只要从左到右遍历字符串,将空格换成"%20"即可,第二种,因为替换以后字符串长度会变化,所以要注意原字符串的长度是否足够。针对第二种解题步骤如下:

    一、遍历一遍字符串,找到现字符串的长度和空格长度,这样就可以计算出替换以后的新字符串的长度;

    二、定义两个指针,一个指向新字符串的最后,一个指向现有的最后,注意现有字符串中的''也要复制过去

    三、从右往左遍历现有字符串,将非空格的字符复制到新的位置,遇到空格替换即可。

    代码如下:

     1 class Solution {
     2 public:
     3     void replaceSpace(char *str,int length) 
     4     {
     5         if(str==nullptr||length<=0)    return;
     6         int oldLen=0;
     7         int numOfBlank=0;
     8         int i=0;
     9         while(str[i] !='')
    10         {
    11             ++oldLen;
    12             if(str[i]==' ')
    13                 numOfBlank++;
    14             i++;
    15         }
    16         int newLen=oldLen+numOfBlank*2;  //新长度
    17         if(length<newLen)   return;
    18         while(oldLen>=0)           //‘’也要复制
    19         {
    20             if(str[oldLen]==' ')
    21             {
    22                 str[newLen--]='0';
    23                 str[newLen--]='2';
    24                 str[newLen--]='%';
    25             }
    26             else
    27             {
    28                 str[newLen--]=str[oldLen];
    29             }
    30             oldLen--;
    31         }
    32     }
    33 };

     //length为字符串str的总容量。着重注意从后往前的思路。

  • 相关阅读:
    第六周总结&第四次实验报告
    课程总结
    第十四周课程总结&实验报告
    第十三周课程总结
    第十二周课程总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
  • 原文地址:https://www.cnblogs.com/love-yh/p/7356756.html
Copyright © 2020-2023  润新知