空格替换(LintCode)
2015-10-25 18:08
393 查看
题目来源:LintCode
原题地址:http://www.lintcode.com/zh-cn/problem/space-replacement/
题目:
设计一种方法,将一个字符串中的所有空格替换成
您在真实的面试中是否遇到过这个题?
Yes
样例
对于字符串
替换空格之后的结果为
注意
如果使用 Java 或 Python, 程序中请用字符数组表示字符串。
难度级别:
容易
思路分析:
此题较为简单,需要注意的是:所谓的“真实的”字符长度,指的是实际字符的数量,不包含末尾的终止符'\0';
这道题的解题策略采用的是,先计算替换之后的字符串的长度(题目中说明有足够的空间,因此我们不需要考虑这一点,若没有说明,可能还需要开辟新的存储空间),然后从末端开始进行置换操作。遇到空格则用%20替换,否则正常复制即可。
实现代码:
代码说明:
实现代码中需要说明的是,字符串数组最后一位是终止符'\0',也是需要保留下来的。
这样就是第二个for循环从lenght开始的原因。
原题地址:http://www.lintcode.com/zh-cn/problem/space-replacement/
题目:
设计一种方法,将一个字符串中的所有空格替换成
%20。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
您在真实的面试中是否遇到过这个题?
Yes
样例
对于字符串
"Mr John Smith", 长度为
13
替换空格之后的结果为
"Mr%20John%20Smith"
注意
如果使用 Java 或 Python, 程序中请用字符数组表示字符串。
难度级别:
容易
思路分析:
此题较为简单,需要注意的是:所谓的“真实的”字符长度,指的是实际字符的数量,不包含末尾的终止符'\0';
这道题的解题策略采用的是,先计算替换之后的字符串的长度(题目中说明有足够的空间,因此我们不需要考虑这一点,若没有说明,可能还需要开辟新的存储空间),然后从末端开始进行置换操作。遇到空格则用%20替换,否则正常复制即可。
实现代码:
class Solution { public: /** * @param string: An array of Char * @param length: The true length of the string * @return: The true length of new string */ int replaceBlank(char string[], int length) { if (length == 0) { return 0; } int cnt = 0; for (int i = 0; i < length; i++) { if (string[i] == ' ') { cnt++; } } int j = length + 2 * cnt; for (int i = length; i >= 0; i--) { if (string[i] == ' ') { string[j--] = '0'; string[j--] = '2'; string[j--] = '%'; } else { string[j--] = string[i]; } } //string[length + 2 * cnt] = '\0'; return length + 2 * cnt; } };
代码说明:
实现代码中需要说明的是,字符串数组最后一位是终止符'\0',也是需要保留下来的。
这样就是第二个for循环从lenght开始的原因。
相关文章推荐
- 数据库链接字符串查询网站
- 一步一步跟我学易语言之第二个易程序菜单设计
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- Flex字符串比较 还有Flex字符串操作
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- 字符串聚合函数(去除重复值)
- Ruby中的字符串编写示例
- 总结的5个C#字符串操作方法分享
- sqlserver中求字符串中汉字的个数的sql语句
- sql server字符串非空判断实现方法
- VBS的字符串及日期操作相关函数
- C#实现将千分位字符串转换成数字的方法
- jquery 删除字符串最后一个字符的方法解析
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)