题目描述
请实现一个函数,将一个字符串中的每个空格替换成 “%20”。例如,当字符串为 We Are Happy. 则经过替换之后的字符串为 We%20Are%20Happy。
解题思路
- 首先遍历字符串,计算共有多少空格,然后扩充字符串的长度。
- 设置两个指针,头指针指向原始字符串的结尾,尾指针指向扩充后的结尾,从后往前遍历。
- 若头指针指向字符不是空格,把当前字符放到尾指针指向空间,同时两个指针前移一位;
- 若头指针指向字符是空格,尾指针前移三次,同时插入 %20,头指针前移一位;
- 遍历,直至条件结束。
代码
public class Solution {
public String replaceSpace(StringBuffer str) {
int len = str.length();
int numspace = 0;
for (int i = 0; i < len; i++) {
if (str.charAt(i) == ' ')
numspace++;
}
// 因为空格本身占了一个空间,所以扩充空间为空格数 * 2
int newlen = len + numspace * 2;
str.setLength(newlen);
int left = len - 1;
int right = newlen - 1;
while (left >= 0 && right > left) {
if (str.charAt(left) == ' ') {
str.setCharAt(right--, '0');
str.setCharAt(right--, '2');
str.setCharAt(right--, '%');
left--;
} else {
str.setCharAt(right--, str.charAt(left--));
}
}
return str.toString();
}
}
文章汇总见这里 >>剑指Offer汇总<<
更多精彩文章见这里 >>我的学习小站<< & 更多好玩见这里 >>技术杂谈<<