题目描述:实现一个函数,把字符串的每个空格替换成%20。如"abc defgx yz",替换成"abc%20defgx%20yz"。
思路:用数组来实现替换
- 遍历找出原字符串中空格的个数
- 新数组的长度就是原数组长度与空格个数2倍的和
- 从头遍历原数组,若元素不是空格直接拷贝,如果是空格,则将新数组的元素置为 '%', '2', '0'。
public class ReplaceString {
//求字符串中空格个数
public static int spaceNum(char[] s){
int count = 0;
for(int i = 0;i < s.length;i++){
if(s[i] == ' '){
count++;
}
}
return count;
}
//打印字符串
public static void print(char[] s){
for(int i = 0;i < s.length;i++){
System.out.print(s[i]);
}
System.out.println();
}
//替换空格
public static char[] replace(char[] s,char[] d){
int j = 0;
for(int i = 0;i < s.length;i++){
if(s[i] != ' '){
d[j] = s[i];
j++;
}else{
d[j++] = '%';
d[j++] = '2';
d[j++] = '0';
}
}
return d;
}
public static void main(String[] args) {
char[] str = {'a','b','c',' ','d','e','f','g','x',' ','y','z'};
print(str);
int newLength = str.length + spaceNum(str) * 2;
char[] result = new char[newLength];
print(replace(str,result));
}
}