程序员面试金典第一章:数组与字符串(4) 空格替换
来源:互联网 发布:java web 打印插件 编辑:程序博客网 时间:2024/04/30 23:20
1.1 题目描述
请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。
测试样例:
“Mr John Smith”,13
返回:”Mr%20John%20Smith”
”Hello World”,12
返回:”Hello%20%20World”
1.2解题思路
思路1:先遍历原来的字符串,找出空格的个数count, 从而得出新的字符串长度newLength = length + 2 * count,最后从后向前写入字符,如果是空格,那么写入%20,否则写入原字符时间复杂度O(n) 空间复杂度O(1)
class Replacement {public: string replaceSpace(string iniString, int length) { // write code here if(length == 0) return iniString; int spaceCount = 0; for(int i = 0; i < length; ++i) { if(iniString[i] == ' ') ++spaceCount; } if(spaceCount == 0) return iniString; int newLength = length + 2 * spaceCount; iniString.resize(newLength + 1); iniString[newLength] = '\0'; for(int i = length - 1; i >= 0 && newLength - 1 > i; --i) { if(iniString[i] == ' ') { iniString[newLength - 1] = '0'; iniString[newLength - 2] = '2'; iniString[newLength - 3] = '%'; newLength -= 3; } else { iniString[newLength - 1] = iniString[i]; -- newLength; } } return iniString; }};};
tips:1.长度为0,直接返回
2.没有空格,直接返回
3.别忘记在新的末尾加上‘\0’
4.当当前需要写入的位置与length一致,说明前面没空格,可以直接结束
0 0
- 程序员面试金典第一章:数组与字符串(4) 空格替换
- 程序员面试金典: 9.1数组与字符串 4字符串中空格全部替换为"%20"
- 程序员面试金典第一章:数组与字符串(5) 基本字符串压缩
- 程序员面试金典第一章:数组与字符串(1) 确定字符互异
- 程序员面试金典第一章:数组与字符串(2) 原串翻转
- 程序员面试金典第一章:数组与字符串(3) 确定两串乱序同构
- 程序员面试金典第一章:数组与字符串(6) 像素翻转
- 程序员面试金典第一章:数组与字符串(7)清除行列
- 程序员面试金典第一章:数组与字符串(8) 翻转子串
- 程序员面试金典(3)字符串中空格替换为"%20"
- 《程序员面试金典》--空格替换
- 《程序员面试金典》空格替换
- 程序员面试金典 1.4 空格替换
- 程序员面试金典题解 空格替换
- 【程序员面试金典】空格替换
- 程序员面试金典(4):空格替换(python)
- 程序员面试金典:字符串--确定字符串互异、原串翻转、空格替换
- 【程序员面试金典】数组与字符串
- SpringCloud分布式开发五大神兽
- Android动画效果(补间动画Tween与 帧动画Frame)
- Scala 提取器(Extractor)
- CPU制作工艺中的14nm工艺
- MVC Entityframework join
- 程序员面试金典第一章:数组与字符串(4) 空格替换
- android 登录框隐藏显示密码
- 真正的ps切图方法(前端必看)
- Java总结篇系列:Java泛型
- java 继承中的this
- java带有效期的map
- Android Studio advanced configuration
- mybatis使用idea自动生成的
- Java中为啥要使用16进制