博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.5
阅读量:2382 次
发布时间:2019-05-10

本文共 1231 字,大约阅读时间需要 4 分钟。

Write a method to replace all spaces in a string with ‘%20’.

思路:耗费空间的解法是,再定义一个数组,将原数组复制到新数组中,复制的过程中进行替换,空间复杂度O(n); 优化:直接在原数组中操作,不过要从后往前,不然会造成覆盖。这让我想到了memcpy实现的过程中也可能出现覆盖需要从后往前覆盖的情况。

时间复杂度:O(n)  空间复杂度:O(num_spaces)

void replaceSpaces(char* str){     if(str==NULL) return;     int num_spaces=0,len=0;     for(len=0;*(str+len)!='\0';len++)         if(*(str+len)==' ')             num_spaces++;     int new_len=len+num_spaces*2;     str[new_len+1]='\0';     for(;len>=0;len--){         if(*(str+len)==' '){             str[new_len--]='0';             str[new_len--]='2';             str[new_len--]='%';         }else{             str[new_len--]=str[len];         }     }}

刚才对照了一下答案发现自己的写法是错误的,尽管结果都正确。因为数组的下标是从0开始的,所以new_len其实已经表示到了'\0'的位置,不需要加1. 粗心还是通病啊,克服,克服

void replaceSpaces(char* str){     if(str==NULL) return;     int num_spaces=0,len=0;     for(len=0;*(str+len)!='\0';len++)         if(*(str+len)==' ')             num_spaces++;     int new_len=len+num_spaces*2;     str[new_len]='\0';     new_len--;     for(len=len-1;len>=0;len--){         if(*(str+len)==' '){             str[new_len--]='0';             str[new_len--]='2';             str[new_len--]='%';         }else{             str[new_len--]=str[len];         }     }}

转载地址:http://wbyab.baihongyu.com/

你可能感兴趣的文章
程序员快速进阶学习到底要看书还是要看视频?
查看>>
web游戏框架哪家强?国内外精选优质框架分析及注意事项
查看>>
各行业都爱用什么编程语言开发?
查看>>
css3实现ps蒙版效果以及动画,炫酷吊炸天!
查看>>
程序员休息时间接私活遭公司辞退,不明觉厉?
查看>>
CSS 、JS实现浪漫流星雨动画
查看>>
花4万学代码,工资却只有5千,这个程序员做的..
查看>>
新手网站建设指南(2)
查看>>
新手网站建设优化,这些网站为你提供数之不尽的免费素材!(3)
查看>>
HTML特殊字符显示(常用到的特殊符号,箭头相关,数学相关,标点,符号相关等)...
查看>>
40岁的程序员找不到工作,原来码农真的是碗青春饭
查看>>
2018年前端性能优化总结,这也是我做程序员的第五个年头了
查看>>
程序员7天内面试了10家公司,如何从命中率0%到命中率至70%?
查看>>
美团第一位前端工程师竟是转行程序员!关于他的10年技术生涯
查看>>
累到想删库,程序员职业倦怠的真实生活
查看>>
CSS3实现王者荣耀匹配人员加载页面
查看>>
千辛万苦招来一名程序员,入职第一天就离职,原因让HR以为听错了
查看>>
盘点那些程序员最污的技术段子,老码农秒懂!
查看>>
程序员:活到 35 岁,我对不起谁?
查看>>
前端小白入门必学:HTML/CSS/JS编码规范
查看>>