这里利用一个技巧,首先统计出字符串中出现的空格数量,计算出替换之后总的数组长度,最后一定注意从后向前遍历进行替换。
public String replaceSpace(String str,String replaceStr){
char[]origin = str.toCharArray();
char[] replaceChar = replaceStr.toCharArray();
int len = str.length();
int spaceNum = 0;
for(int i=0;i<len;i++){
if(origin[i]==' '){
spaceNum++;
}
}
if (spaceNum==0)
return str;
int replaceLen = replaceStr.length();
int newLen = len + spaceNum * (replaceLen-1);
char[] newStr = new char[newLen];
int k = newLen-1;
for(int j=len-1;j>=0;j--){
if(origin[j]== ' ') {
for(int ii=replaceLen-1;ii>=0;ii--){
newStr[k--] = replaceChar[ii];
}
} else {
newStr[k--] = origin[j];
}
}
return new String(newStr);
}
public static void main(String[]args){
ReplaceSpace replaceSpace = new ReplaceSpace();
String s = replaceSpace.replaceSpace("abc def ghi jkl mn opq","WW");
System.out.println(s);
}