212.Space Replacement-空格替换(容易题)
来源:互联网 发布:软件开发培训学费 编辑:程序博客网 时间:2024/04/28 02:07
空格替换
题目
设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
你的程序还需要返回被替换后的字符串的长度。
注意事项
如果使用 Java 或 Python, 程序中请用字符数组表示字符串。样例
对于字符串”Mr John Smith”, 长度为 13
替换空格之后,参数中的字符串需要变为”Mr%20John%20Smith”,并且把新长度 17 作为结果返回。挑战
在原字符串(字符数组)中完成替换,不适用额外空间
题解
1.遍历数组,找到空格则把后面的字符全部后移2位,不使用额外空间。
public class Solution { /** * @param string: An array of Char * @param length: The true length of the string * @return: The true length of new string */ public int replaceBlank(char[] string, int length) { if (string == null) { return 0; } int count = 0; for(int i=0;i<string.length;) { if (string[i] == ' ') { move(string,i+1,length + count * 2-1); string[i++]='%'; string[i++]='2'; string[i++]='0'; count++; } else { i++; } } return length + count * 2; } private void move(char[] string, int start, int end) { for (int i=end;i>=start;i--) { string[i+2] = string[i]; } }}
2.九章的解法,先遍历得到空格数量,然后计算出替换后的数组长度。替换的方法为由后向前,依次赋值给最后一个未使用的空位。如”Mr John Smith”有2个空格,则替换后总长度为13+2*2=17。
未替换前带空格表示为Mr John Smith****(*表示空格),遍历的时候从h向M进行:h不是空格则复制到尾部->Mr John Smith***h… 至第一个空格时为Mr John SmitSmith,替换后为Mr John S%20Smith…直至遍历完毕。
public class Solution { /** * @param string: An array of Char * @param length: The true length of the string * @return: The true length of new string */ public int replaceBlank(char[] string, int length) { if(length == 0) { return 0; } int num = 0; for(int i=0;i<length;i++) { if(string[i] == ' ') { num++; } } int newLen = length + num*2; string[newLen] = 0; int j = 1; for(int i = length-1;i >= 0;i--) { if(string[i] != ' ') { string[newLen - j++] = string[i]; } else { string[newLen - j++] = '0'; string[newLen - j++] = '2'; string[newLen - j++] = '%'; } } return newLen; }}
Last Update 2016.9.13
0 0
- 212.Space Replacement-空格替换(容易题)
- Space Replacement
- [刷题]Space Replacement
- [Lintcode]Space Replacement
- #212 Space Replacement
- LintCode_212 Space Replacement
- Space Replacement 解题报告
- [LintCode]212.空格替换
- 面试杂题(六)替换空格
- 第四题 替换空格
- 算法题/替换空格
- 空格替换(Java)
- 空格替换(LintCode)
- 替换空格(java)
- 替换空格(牛课网)
- 替换空格(字符串)
- 替换空格(java)
- 用 CSS 实现图片替换文字(Image replacement)
- RequestDispatcher提供两个方法:forward,include有什么区别
- 【GLSL教程】(一)图形流水线
- C++学习路线及书籍推荐
- 如何用PHP获取百度地图
- 怎样用swift制作一个滑出的导航控制面板
- 212.Space Replacement-空格替换(容易题)
- 将java项目导出为jar包+导出第三方jar包+使用命令行调用+传参
- 树、森林和二叉树的转换
- iOS-获取蓝牙Mac地址
- MySQL二进制安装
- NFA/DFA
- 【GLSL教程】(二)在OpenGL中使用GLSL
- Mysql 5.7主主备份配置(原创)
- 注解 @interface