题目;将字符串中的空格替换成“%20”例如:输入"we are happy",则输出"we%20are%20happy"
思路:先将字符串转换成数组,遍历一遍数组,统计空格的个数,得到新数组的长度=旧数组的长度+2*空格。然后将旧数组从尾部开始元素拷贝到新数组中,空格则用三个长度的‘%’,‘2’,‘0’替换。
代码实现:
public static String replaceBlank(String str){
if(str==null)
return null;
char[] oldArray=str.toCharArray();
int oldLength=oldArray.length;
int i=0;//用于统计空格的个数
for(char c:oldArray){
if(c==' '){
i++;
}
}
int newLength=oldLength+2*i;//新数组的长度
char[] newArray=new char[newLength];
int m=oldLength-1;//旧数组的下标
int n=newLength-1;//新数组的下标
while (m>=0&&n>=0){
if(oldArray[m]==' '){
newArray[n--]='0';
newArray[n--]='2';
newArray[n--]='%';
}else {
newArray[n--]=oldArray[m];
}
m--;
}
return String.valueOf(newArray);
}