题目:
请实现一个函数,把字符串中的每个空格替换成“%20”。例如:输入“we are happy.”,则输出“we%20are%20happy.”
解析:倒序替换即可
public static void main(String[] agrs) {
String s="we are happy.";
char str1[]= new char[30];
char str2[]=s.toCharArray();
int p=str2.length-1;
while(p>=0) {
str1[p]=str2[p];
p--;
}
char[] str=ReplaceBlank(str1,str2);
}
/**
* @param str
* @param length
* @return
*/
public static char[] ReplaceBlank(char[] str1,char[] str2) {
if (str1.length <= 0)
return str1;
//先统计有多少个空格
int originalLength = 0;
int numberOfBlank = 0;
int i = 0;
while (i<=str2.length-1) {
++originalLength;
if (str2[i] == ' ')
++numberOfBlank;
++i;
}
/*
* newLength 为把空格替换成"%20"之后的长度
*
*/
int newLength = originalLength + numberOfBlank * 2;
if (newLength > str1.length) {
return str1;
}
int indexOfOriginal = originalLength;
int indexOfNew = newLength;
while (indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) {
if(str1[indexOfOriginal]==' ') {
str1[indexOfNew--]='0';
str1[indexOfNew--]='2';
str1[indexOfNew--]='%';
}
else {
str1[indexOfNew--]=str1[indexOfOriginal];
}
--indexOfOriginal;
}
return str1;
}