剑指offer二:替换空格

时间:2023-02-09 14:08:44

题目描述:

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解题思路:

本题中需要注意,新的字符串的长度要比旧的字符串长度长,这意味着,从前往后替换的话,每更换一次,后面的字符就要向后移动。因此,在替换的过程中需要考虑到时间复杂度和空间复杂度的问题。

public class Solution {
public String replaceSpace(StringBuffer str) {
int spaceNum = 0;
//1.先计算出字符串中的空格数
for(int i = 0; i < str.length(); i ++){
if(str.charAt(i) == ' '){
spaceNum ++;
}
} //旧数组下标
int indexold = str.length() -1;
//新数组下标
int indexnew = str.length() + 2*spaceNum -1;
int index = indexnew;
String str1 = "";
//定义新的数组
char[] strArr = new char[indexnew+1];
for(int j = indexold; j >= 0; j --){
if(str.charAt(j) != ' '){
strArr[index] = str.charAt(j);
index--;
}else{
strArr[index] = '0';
strArr[index-1] = '2';
strArr[index-2] = '%';
index-=3;
}
}
// strArr[0] = str.charAt(0);
//将字符数组转变为String
for(int k = 0; k < strArr.length; k++){
str1+=strArr[k];
}
return str1;
}
}

测试结果:

剑指offer二:替换空格