题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为 "We Are Happy". 则经过替换之后的字符串为 "We%20Are%20Happy"。
测试用例
- 输入的字符串包含空格(空格位于字符串的最前面;空格位于字符串的最后面;空间位于字符串的中间;字符串中有连续多个空格)。
- 输入的字符串没有空格。
- 特殊输入测试(字符串为空指针;字符串是一个空字符串)
题目考点
- 考察应聘者对字符串的编程能力。
- 考察应聘者分析时间效率的能力、我们要能清晰的分析出两种不同方法的时间效率各是多少。
- 考察应聘者对 内存覆盖以及StringBuild长度随append的动态改变 是否有高度的警惕。
- 考察应聘者的思维能力,在从前到后替换的思路被面试官否定后,我们能迅速想到从后往前替换的方法。
很简单,从后往前遍历就对了。
package com.offer._5;
/**
* @author :jhys
* @date :Created in 2020/11/12 20:17
* @Description :
*/
public class Solution {
public static String replaceSpace(StringBuffer str) {
StringBuffer res = new StringBuffer();
int len = str.length() - 1;
for (int i = len; i >= 0; i--) {
if (str.charAt(i) == ' ') {
res.append("02%");
} else {
res.append(str.charAt(i));
}
}
return res.reverse().toString();
}
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("A B C");
String s = replaceSpace(sb);
System.out.println(s);
}
}