其实这种题目并不适合使用java来做,因为java String的不变性。必然导致其要新开辟一段空间,这样就背离了题目的初衷:在原来的字符串上替换。
import java.util.Scanner;
publicclass Main {
publicstatic void main(String[] args) {
Scanner cin = newScanner(System.in);
String str = cin.nextLine();
cin.close();
intspaceNum = 0;
finalint n = str.length();
for(inti = 0; i < n; ++i) {
if(' ' == str.charAt(i)) {
++spaceNum;
}
}
char[] nStr = newchar[n + spaceNum * 2];
intindex = n + spaceNum * 2- 1;
for(inti = n - 1; i >= 0; --i) {
charch = str.charAt(i);
if(' ' == ch) {
nStr[index--] = '0';
nStr[index--] = '2';
nStr[index--] = '%';
}else{
nStr[index--] = ch;
}
}
String result = newString(nStr);
System.out.println(result);
}// main
}// class
/**************************************************************
Problem: 1510
User: buptxxz
Language: Java
Result: Accepted
Time:780 ms
Memory:26460 kb
****************************************************************/