首页 > 分享 > 《剑指Offer》之“替换空格”

《剑指Offer》之“替换空格”

最新推荐文章于 2024-02-10 19:25:16 发布

opooc 于 2018-03-18 22:59:17 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

题目描述

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

实现代码

错解:

class Solution { public: void replaceSpace(char *str,int length) { if(str == nullptr ||length<= 0){ return; } int OLenth = 0; int spaceLenth = 0; int i = 0; while(str[i] != ''){ ++OLenth; if(str[i] == ' '){ spaceLenth+=1; } ++i; } int AllLenth = spaceLenth*2 +OLenth; int Olenth2 = OLenth; //int spaceLenth2 = spaceLenth; if(AllLenth >length){ return; } while(Olenth2 >= 0 && Olenth2 < AllLenth ){ if(str[Olenth2] ==' '){ str[AllLenth--] = '0'; str[AllLenth--] = '2'; str[AllLenth--] = '%'; } str[AllLenth--] == str[Olenth2]; --Olenth2; } } }; --------- 不通过 您的代码已保存 答案错误:您提交的程序没有通过所有的测试用例 case通过率为0.00% 测试用例: "hello world" 对应输出应该为: "hello%20world" 你的输出为: "hello%20rld"

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

正解:

class Solution { public: void replaceSpace(char *str,int length) { if(str==NULL) return ; int CountOfBlanks=0; int Originallength=0; for(int i=0;str[i]!='';i++) { Originallength++; if(str[i]==' ') ++CountOfBlanks; } int len =Originallength+2*CountOfBlanks; if(len+1>length) return ; /* int pOrignallength=orignallength; int pNewlength=newlength; while(pOrignallength>=0 && pNewlength>pOrignallength) { if(str[pOrignallength]==' ') { str[pNewlength--]='0'; str[pNewlength--]='2'; str[pNewlength--]='%'; } else { str[pNewlength--]=str[pOrignallength]; } pOrignallength--; } */ char*pStr1=str+Originallength;//复制结束符‘’ char*pStr2=str+len; while(pStr1<pStr2) { if(*pStr1==' ') { *pStr2--='0'; *pStr2--='2'; *pStr2--='%'; } else { *pStr2--=*pStr1; } --pStr1; } } };

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

终于一点点排查出错误来了。

str[AllLenth–] == str[Olenth2];为手误。
应改为
str[AllLenth–] = str[Olenth2];
此乃编程之大过。
谨记·!

相关知识

在线空格修剪器
//detail.1688.com/offer/685575411429.html?spm=a26352. https
//detail.1688.com/offer/680450766604.html?spm=a26352. https
Re: 社招offer求比较
photoshop cs6怎么替换颜色 photoshop cs6给植物图片替换颜色教程
357枚美国顶尖大学Offer全部出炉,究竟谁才是早申大战的终极赢家?
剑花——热带雨林的珍贵之花
花粥没有花
Eclipse自动补全(取消“=”,空格,“.”和“;”的自动补全,加入TAB的自动补全)
【错误】jsp查询字符串中空格导致的异常问题!

网址: 《剑指Offer》之“替换空格” https://m.huajiangbk.com/newsview764153.html

所属分类:花卉
上一篇: python json.load
下一篇: kali linux中文乱码修复