字符串空格替换
2016-10-25 12:49
211 查看
/**
* 题目描述:字符串空格替换:请实现一个函数,将一个字符串中的空格替换成”%20”。例如,当字符串为We Are Happy,则经过替换之后的字符串为We%20Are%20Happy。
* 从尾部循环替换(在冒泡排序算法之中也是从尾部往前进行比较然后交换的)
*
* 思路:
* 首先统计出该字符串中所有的空格数量,并重新计算新串所需的char数组的长度,把旧串转化成的char数组拷贝到一个临时数组中,
* 并同时创建一个新的char数组,该新数组的长度是计算之后的长度。从该新数组的尾部开始循环,
* 依次往前比较,只要遇到了空格就替换为%20。如果没有遇到空格就直接复制过来就行。
* 由于只有一层循环,加上统计空格的时间开销,就是两个循环的时间开销,其他的操作都是O(n2)的时间复杂度。所以该算法综合起来的时间复杂度是O(n)。
*/
* 题目描述:字符串空格替换:请实现一个函数,将一个字符串中的空格替换成”%20”。例如,当字符串为We Are Happy,则经过替换之后的字符串为We%20Are%20Happy。
* 从尾部循环替换(在冒泡排序算法之中也是从尾部往前进行比较然后交换的)
*
* 思路:
* 首先统计出该字符串中所有的空格数量,并重新计算新串所需的char数组的长度,把旧串转化成的char数组拷贝到一个临时数组中,
* 并同时创建一个新的char数组,该新数组的长度是计算之后的长度。从该新数组的尾部开始循环,
* 依次往前比较,只要遇到了空格就替换为%20。如果没有遇到空格就直接复制过来就行。
* 由于只有一层循环,加上统计空格的时间开销,就是两个循环的时间开销,其他的操作都是O(n2)的时间复杂度。所以该算法综合起来的时间复杂度是O(n)。
*/
public class ReplaceSpace_02 { public String replaceSpace(StringBuffer str){ String s = str.toString(); //统计空格数 int count = getBlankNum(str.toString()); //获取原来字符串的长度 int originalStrLen = s.toCharArray().length; //计算替换空格之后需要的长度(原始字符串长度+空格数*2,因为是一个字符替换成了3个字符) int newStrLen = count*2 + originalStrLen; char[] tempArray = new char[newStrLen]; //把原字符串复制到tempArray数组中 System.arraycopy(s.toCharArray(),0,tempArray,0,originalStrLen); //标记新串和原始字符串的索引 int originalStrIndex = originalStrLen - 1; int newStrIndex = newStrLen -1; //当originalStrIndex == newStrIndex的时候替换完毕 while(originalStrIndex >= 0 && originalStrIndex != newStrIndex){ if(tempArray[originalStrIndex] == ' '){ tempArray[newStrIndex--]='0'; tempArray[newStrIndex--]='2'; tempArray[newStrIndex--]='%'; }else{ tempArray[newStrIndex--] = tempArray[originalStrIndex]; } originalStrIndex--; } return new String(tempArray); } /** * 计算空格数 */ private int getBlankNum(String str){ int count = 0; for(int i = 0;i<str.length();i++){ if(str.charAt(i)==' '){ count++; } } return count; } public static void main(String[] args){ String s = new ReplaceSpace_02().replaceSpace(new StringBuffer("we are happy")); System.out.println(s); } }
相关文章推荐
- 请实现一个函数,把字符串中的每个空格替换成“%20”。
- 在JS中,使用正则表达式,用指定字符替换字符串前后空格
- 请实现一个函数,把字符串中的每个空格替换成“20%”。
- 使用js去掉字符串的两侧的指定字符和替换去除空格、换行、回车
- 字符串空格替换或删除
- 字符串中空格和换行的替换
- 字符串—空格替换
- 【面试算法系列】替换字符串中的空格为其他字符 - C语言实现
- 字符串替换空格
- 请实现一个函数,将一个字符串中的空格替换成“%2”
- 刷题Day2——替换一个字符串中的空格
- 字符串操作:索引位置、去空格、替换字符串
- 处理字符串中包括回车符号的情况,替换为空格
- 替换字符串中的空格
- 【我的算法日记】请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。
- Js替换字符串中的所有空格
- 把字符串中的每个空格替换程“%20”,例如输入“I love my hometown”,输出为”I%20love%20my%20hometown”
- 实现函数替换字符串中空格为%20.
- 字符串空格替换练习题
- C#---对字符串的移除,替换,提取,切除空格,查索引