问题导读:
输入一个带有空格的字符串,将字符串中的空格替换为 20%
代码:
import java.util.Scanner;
public class interview_4 {
private static int counter = 0;
private static char []ch = new char[32];
public static void main(String []args) {
Scanner cin = new Scanner(System.in);
/*
*先用scanner 读取字符串,在存到char数组中
*/
String str = cin.nextLine();
for(int j = 0; j < str.length(); j++) {
ch[j] = str.charAt(j);
}
//得到有效字符串长度和空格数量
int lengthOfOriginal = 0;
int i = 0;
while(ch[i] != 0) {
lengthOfOriginal++;
if(ch[i] == ' ') {
counter++;
}
i++;
}
/*
* 定义两个指针,分别指向新字符串尾部和原始字符串尾部
* 从后向前替换
*/
int indexOfOriginal = lengthOfOriginal;
int newLength = counter*2 + lengthOfOriginal;
int indexOfNew = newLength;
while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) {
if(ch[indexOfOriginal] != ' ') {
ch[indexOfNew--] = ch[indexOfOriginal--];
} else {
ch[indexOfNew--] = '%';
ch[indexOfNew--] = '0';
ch[indexOfNew--] = '2';
indexOfOriginal--;
}
}
for(int j = 0; j < newLength; j++) {
System.out.print(ch[j]);
}
}
}
测试:
peerslee@peerslee-ubuntu:~/ws/java/offer/4$ java interview_4
Gun N Rose !
Gun20%N20%Rose20%!
peerslee@peerslee-ubuntu:~/ws/java/offer/4$ java interview_4
Hello PeersLee!
Hello20%PeersLee!
peerslee@peerslee-ubuntu:~/ws/java/offer/4$ java interview_4
Offer
Offer
peerslee@peerslee-ubuntu:~/ws/java/offer/4$