题目描述:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
题目思路:
双指针法,定义两个指针分别指向原字符串数组和新的字符串数组。当遇到非空格字符,将对应字符复制到新的字符串数组,当遇到空格字符,在新字符串数组上作修改, 更好为“%20”。时间复杂度为O(n)。
代码(Java):
public class Solution {
public static String replaceSpace(StringBuffer str) {
String[] newStr = str.toString().split("");
int originalLength = newStr.length;
int numOfBlanks = 0;
for(int i = 0; i < originalLength; i++){
if(newStr[i].equals(" ")){
++numOfBlanks;
}
}
int newLength = originalLength + 2 * numOfBlanks;
int indexOfOriginal = originalLength - 1;
int indexOfNew = originalLength + 2 * numOfBlanks - 1;
String[] temp = new String[newLength];
for(int i = 0; i < temp.length; i++){
temp[i] = "1";
}
int i = 0;
while(indexOfOriginal <= indexOfNew && indexOfOriginal >= 0){
if(newStr[indexOfOriginal].equals(" ")){
temp[indexOfNew--] = "0";
temp[indexOfNew--] = "2";
temp[indexOfNew--] = "%";
}else{
temp[indexOfNew--] = newStr[indexOfOriginal];
}
--indexOfOriginal;
}
String tempStr = "";
for(int j= 1; j < temp.length; j++){
temp[0] = temp[0].concat(temp[j]);
}
System.out.println(temp[0]);
return temp[0];
}
}