题目:
实现一个方法,把一个字符数组里面的空格全部替换为“20%”。
思路:
首先呢,要先获取字符数组中有多少个空格以及字符数组中字符的长度,计算出替换后的长度;然后,让一个虚拟指针indexOfNew指想新长度大小的那个下标位置,让另一个虚拟指针indexOfOriginal指向原字符长度大小的那个下表位置,判断indexOfOriginal下表位置的是不是为空格,如果是,indexOfNew下表位置以及前面两个位置依次放入0,2,%;indexOfOriginal前移。继续判断;如果不是空格,直接把indexOfOriginal处的字符放到indexOfNew下表位置。
代码:
public class Test04 {/** length为字符数组的总容量*/public static void replaceBlank(char[] string,int length){if(string ==null || length<1){return;}int originalLength = 0;//字符的实际长度int blankLength = 0;//空格的个数int i = 0;while(i < length && string[i] != '\u0000'){++originalLength;if(string[i]==' '){++blankLength;}i++;}//新的长度为字符长度加上空格个数乘以2,本来是20%三个字符,因为还要去一个空格,相当于每遇到一个空格,长度就需要增加两个int newLength = originalLength + blankLength * 2;if(newLength > length)return;int indexOfOriginal = originalLength;int indexOfNew = newLength;while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal){if(string[indexOfOriginal] == ' '){string[indexOfNew--] = '0';string[indexOfNew--] = '2';string[indexOfNew--] = '%';}else{string[indexOfNew--] = string[indexOfOriginal];}--indexOfOriginal;}for (int j = 0;j<newLength;j++) {System.out.print(string[j]);}}public static void main(String[] args) {char[] str = new char[20];str[0] = 'h';str[1] = 'e';str[2] = 'l';str[3] = 'l';str[4] = 'o';str[5] = ' ';str[6] = 'w';str[7] = ' ';replaceBlank(str,str.length);}}