题目描述:实现一个函数,把字符串中的每个空格都替换成"%20",例如输入"We are happy.",则输出"We%20are%20happy."
思路:按照题目要求的是把空格换成%20这种固定的字符,而且其他的字符不变,这样的话可以计算出新字符串的长度(需要先计算出空格的个数,新字符串长度为旧字符串长度+空格个数*2),然后对旧字符串从后向前遍历,如果当前字符不为空格,就直接赋给新字符串末尾,这时末尾指针加1;如果当前字符为空格时,新字符串被赋值%20,而且末尾指针+3;这样一直到遍历结束。
public static String changeStr(String s) {
if (s == null || s.length() == 0) {
return s;
}
int space = 0;
int sLen = s.length();
for (int i = 0; i < sLen; ++i) {
if (s.charAt(i) == ' ') {
++space;
}
}
int strLen = sLen + 2 * space;
char[] strChar = new char[strLen];
int p1 = sLen - 1;
int p2 = strLen - 1;
while (p1 >= 0) {
if (s.charAt(p1) != ' ') {
strChar[p2--] = s.charAt(p1--);
} else {
strChar[p2--] = '0';
strChar[p2--] = '2';
strChar[p2--] = '%';
p1--;
}
}
return String.valueOf(strChar);
}