字符串常量不是不能被修改吗

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 字符串常量不是不能被修改吗?为什么以下代码可以通过
class Solution {
public:  void replaceSpace(char *str,int length) {
 if(str==NULL||length<0)
            return ;
        int i=0;
        int oldnumber=0;//记录以前的长度
        int replacenumber=0;//记录空格的数量
        while(str[i]!='\0')
            {
               oldnumber++;
               if(str[i]==' ')
                   {
                     replacenumber++;
                   }
                  i++; 
            }
        int newlength=oldnumber+replacenumber*2;//插入后的长度
        if(newlength>length)//如果计算后的长度大于总长度就无法插入
            return ;
        int pOldlength=oldnumber; //注意不要减一因为隐藏个‘\0’也要算里
        int pNewlength=newlength;
        while(pOldlength>=0&&pNewlength>pOldlength)//放字符
            {
              if(str[pOldlength]==' ') //碰到空格就替换
                  {
                     str[pNewlength--]='0';
                     str[pNewlength--]='2';
                     str[pNewlength--]='%';
                     
                  }
               else //不是空格就把pOldlength指向的字符装入pNewlength指向的位置
               {
                    str[pNewlength--]=str[pOldlength];
                   
               }
             pOldlength--; //不管是if还是elsr都要把pOldlength前移
             
           }  }
};

#笔试题目#
全部评论
哪里说是字符串常量了😂
点赞
送花
回复
分享
发布于 2019-10-03 17:36
这入参不是个字符数组么?数组为什么不能修改
点赞
送花
回复
分享
发布于 2019-10-03 17:55
滴滴
校招火热招聘中
官网直投
c里面以NULL结尾的字符数组就是字符串,没有字符串一定是常量的说法。
点赞
送花
回复
分享
发布于 2019-10-03 19:11
她的意思字符串应该是用字符数组存的,不属于字符串常量。在c加加里是不能把char指针直接指向const常量的,编译器会报错。
点赞
送花
回复
分享
发布于 2019-10-03 19:15
String每次修改 都创建了新的字符串常量吧
点赞
送花
回复
分享
发布于 2019-10-03 17:32
用stringbuilder进行拼接了?
点赞
送花
回复
分享
发布于 2019-10-03 17:35
这样的函数如果直接传字符串进去编译器会报错的,你可以试试
点赞
送花
回复
分享
发布于 2019-10-09 20:29

相关推荐

TP-LINK 前端工程师 年包大概20出头 本科
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务