设计一种方法,将一个字符串中的所有空格替换成 %20
。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
你的程序还需要返回被替换后的字符串的长度。
//将一个字符串中的空格替换为"%20"
import java.util.*;
public class Solution {
/**
* @param string: An array of Char
* @param length: The true length of the string
* @return: The true length of new string
*/
public static int replaceBlank(char[] string, int length) {
int num=0;//konggeshu
int i=0;
while(i<length){
if(string[i]==' '){
num++;
}
i++;
}
int newnum=length+2*num;
char []ch2=new char[newnum];
int j=0;
for(i=0;i<length;i++){
if(string[i]!=' '){
ch2[j++]=string[i];
}else{
ch2[j++]='%';
ch2[j++]='2';
ch2[j++]='0';
}
}
/*
string=Arrays.copyOf(string,length+2*num);
i=0;
while(i<length+2*num){
string[i]=ch2[i];
i++;
}
*/
int t=0;
while(t<newnum){
string[t]=ch2[t];
t++;
}
// System.out.println(string);
return length+2*num;
}
public static void main(String []args){
String str="hello world";
char []ch=new char[100];
char []ch1=str.toCharArray();//toCharArray()函数会返回一个新的数组,
//因此就算原数组定义了长度,返回的新数组会取代它
int i=0;
while(i<ch1.length){
ch[i]=ch1[i];
i++;
}
int k=replaceBlank(ch,ch1.length);
System.out.println(k);
System.out.println(ch);
}
}
注:
1、string=Arrays.copyOf(string,length+2*num);
该函数将原来的数组内容复制到一个新分配的数值组中,虽然还是原来的数组引用,但该引用所指向的已经是一个新的数组了。之后对string进行改变,原来的数组并不会改变。
2、char []ch=new char[100];
char []ch1=str.toCharArray();
toCharArray()函数会返回一个新的数组,因此就算原数组定义了长度,返回的新数组会取代它