【题目】:
请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。
【解题思路】:先计算出需要的总长度,然后从后往前进行复制和替换,则每个字符只需要复制一次即可。时间效率为O(n)。
package com.offer.offer05;
public class Solution {
public static String replaceSpace(StringBuffer str) {
if(str == null){
return null;
}
int oldLength = str.length();
int newLength = oldLength;
for(int i=0;i<oldLength;i++){
if(str.charAt(i) == ' '){
newLength += 2;
}
}
str.setLength(newLength);
int oldIndex = oldLength-1;
int newIndex = newLength-1;
while(oldIndex < newIndex){
if(str.charAt(oldIndex) != ' '){
str.setCharAt(newIndex--,str.charAt(oldIndex));
}else{
str.setCharAt(newIndex--,'0');
str.setCharAt(newIndex--,'2');
str.setCharAt(newIndex--,'%');
}
oldIndex--;
}
return str.toString();
}
public static void main(String[] args){
StringBuffer stringBuffer = new StringBuffer("");
System.out.println(replaceSpace(stringBuffer));
}
}