《剑指Offer》读书笔记02:替换空格
来源:互联网 发布:三维软件solidworks 编辑:程序博客网 时间:2024/06/11 11:23
《剑指Offer》读书笔记02:替换空格
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.,则经过替换之后的字符串为We%20Are%20Happy.。
解题思路
1.常规思维:
- 用一个指针从第一个字符往后移,遇到空格则先把空格后面的所有字符往后移动两格,然后把空格替换成%20。
- 每次需移动后面O(n)个字符,假如有O(n)个空格,则时间效率为O(
2.创新思维:
先计算出空格个数,然后从后往前复制和替换。
例如题目中原字符串字符数14,空格数2,每个空格替换后比之前多2个字符,则目标字符串字符数18。
从后往前,依次复制.yppaH,碰到空格,替换成02%,依次复制erA,碰到空格,替换成02%,依次复制eW,完成。
参考代码
void replaceSpace(char *str,int length) { if ( str == NULL || length <= 0 ) { return; } int spaceNum = 0; char * pRight1 = str; while ( *pRight1 != '\0' ) { if ( *pRight1 == ' ' ) { spaceNum++;//计算空格数 } pRight1++;//指针pRight1指向替换前的最后位置。 } if ( spaceNum == 0 ) { return; } else { char * pRight2 = pRight1+2*spaceNum;//指针pRight2指向替换后的最后位置。 while ( pRight2 != pRight1 ) {//结束条件 if ( *pRight1 != ' ' ) { *pRight2-- = *pRight1--;//先复制,再同时左移 } else { *pRight2-- = '0'; *pRight2-- = '2'; *pRight2-- = '%'; pRight1--;//pRight2边替换边左移,最后pRight1左移。 } } }}
0 0
- 《剑指Offer》读书笔记02:替换空格
- 替换空格 剑指offer 02
- 剑指Offer [02] 替换空格
- [剑指offer]替换空格
- [剑指offer]替换空格
- 剑指offer:替换空格
- 替换空格--《剑指offer》
- 剑指Offer:替换空格
- 【剑指offer】替换空格
- 《剑指Offer》--替换空格
- 剑指offer--替换空格
- 【剑指offer】替换空格
- 【剑指offer】空格替换
- 剑指offer-替换空格
- 剑指offer:替换空格
- [剑指offer]替换空格
- 《剑指offer》替换空格
- 剑指offer:替换空格
- LeetCode--Merge Two Sorted Lists
- 【Jboss】在jboss上部署web应用
- kafka 配置部署
- Storm原理详解
- bootstrap笔记
- 《剑指Offer》读书笔记02:替换空格
- Git学习笔记之<撤销操作>
- First Blood
- 编译hadoop的libhdfs.a
- 关于 File.separator
- Python性能鸡汤
- Oracle12C安装:Could not initialize class sun.awt.X11.XToolkit
- GestureOverlayView手势库的应用
- PAT1002