2.替换空格(做第二遍时感觉仍有有难度,第三次做就没有难度了)
来源:互联网 发布:prizegiving软件 编辑:程序博客网 时间:2024/05/16 01:52
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
<pre name="code" class="cpp">class Solution {public:void replaceSpace(char *str,int length) { if ( !str || length <= 0 ) return ; int sumOfLetter = 0 ; int sumOfBlank = 0 ; char* pStr = str ; while ( *pStr != '\0' ) { if ( *pStr != ' ' ) sumOfLetter ++ ; else sumOfBlank ++ ; pStr ++ ; } int orgLength = sumOfLetter + sumOfBlank ; int newLength = sumOfLetter + sumOfBlank * 2 ; char* pNewStr = pStr + ( 2 * sumOfBlank ) ; while ( pStr >= str ) { if ( *pStr != ' ' ) { *pNewStr = *pStr ; pStr -- ; pNewStr -- ; } else { *pNewStr-- = '0' ; *pNewStr-- = '2' ; *pNewStr-- = '%' ; *pStr-- ; } }}};
做第二遍的感悟:
字符串以'\0'作为结束,'\0'也是字符串的一部分
while ( *pStr != '\0' ) { if ( *pStr != ' ' ) sumOfLetter ++ ; else sumOfBlank ++ ; pStr ++ ; }这个while循环做完后,pStr指向的是str字符串的'\0'位置
第三次做:
//length为牛客系统规定字符串输出的最大长度,固定为一个常数class Solution {public:void replaceSpace(char *str, int length) {if (str == NULL) return ;int orgLength = length ;int blank = 0 ;char* pStr = str ;while (*pStr != '\0') {if (*pStr == ' ') blank++ ;++pStr ;}char* pOld = pStr ;char* pNew = pStr + 2 * blank ;while (pOld >= str) {if (*pOld == ' ') {*pNew-- = '0' ;*pNew-- = '2' ;*pNew-- = '%' ;--pOld ;}else {*pNew = *pOld ;pNew-- ;pOld-- ;}}str = pNew ;}};
0 0
- 2.替换空格(做第二遍时感觉仍有有难度,第三次做就没有难度了)
- 10.数值的整数次方(做第二遍时感觉仍有难度,第三次做就没有难度了)
- 14.合并两个排序的链表(做第二遍时感觉仍有难度,做到第三遍的时候就感觉没有难度了)
- 19.栈的压入、弹出序列(做第二遍时感觉仍有难度,做第三次时依然需要看思路,但是已经觉得简单了)
- 4.重建二叉树(做第二遍时感觉仍有有难度,第三次做还是要看一下思路才行)
- 6.旋转数组的最小数字(做第二遍时感觉仍有有难度)
- 21.二叉搜索树的后序遍历序列(做第二遍时感觉仍有难度,第三次做时还是要看思路)
- 22.复杂链表的复制(做第二遍时感觉仍有难度,第三次做还是要看思路)
- 23.二叉树中和为某一值的路径(做第二遍时感觉仍有难度,第三次做还是要看一下思路)
- 15.树的子结构(做第二遍时感觉仍有难度,做第三遍时仍然要看思路)
- 24.二叉搜索树与双向链表(做第二遍时感觉仍有难度,做第三遍时还需要看下思路)
- uva做题难度顺序
- A+B Problem(V) 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 做了A+B Problem之后,Yougth感觉太简单了,于是他想让你求出两个数反
- java初学着做项目的难度
- 图案打印 (好坑的输出,注意最后一个*后就没有空格了,PE了三遍)
- 难度2 字符串替换
- 57.序列化二叉树(第二次做依然觉得有难度)
- 资讯站难度不小 为何那么多站长在做
- c++作业4
- Problem-M
- 关于色温调节的一个 shader
- C++小细节之static的作用
- C经典 输入数组并打印
- 2.替换空格(做第二遍时感觉仍有有难度,第三次做就没有难度了)
- 数据库设计三大范式
- QT基础(八)----TCP通信 & UDP通信
- matlab中噪声有关问题
- SSH免密码登陆
- Android Studio 升级之更新包升级版本
- 程序集反射 Type 类
- POJ 1753-Flip Game(枚举&&DFS)
- pulltorefreshlistview 和xlistview 中的获取item控件布局时出现的类转换异常的问题: