剑指offer(二):替换空格
题目:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解决方法:
先统计空格的个数,再从后往前替换,时间复杂度为O(n),空间复杂度为O(n)[看别人是O(1),我需要下去再研究一下]
代码如下:
1 public class Solution { 2 public String replaceSpace(StringBuffer str) { 3 if(str == null || str.length() == 0){ 4 return ""; 5 } 6 String string = str.toString(); 7 char[] ch = string.toCharArray(); 8 //空格数目 9 int count = 0; 10 for(int i = 0; i < ch.length;i++){ 11 if(ch[i] == ' '){ 12 count++; 13 } 14 } 15 //从后往前替换 16 char c[] = new char[ch.length+2*count]; 17 for(int i = ch.length-1; i >=0 ;i--){ 18 if(ch[i] != ' '){ 19 c[i+2*count] = ch[i]; 20 }else{ 21 count--; 22 c[i+2*count] = '%'; 23 c[i+2*count+1] = '2'; 24 c[i+2*count+2] = '0'; 25 } 26 } 27 return new String(c); 28 } 29 }