请实现一个函数,把字符串 ​​s​​ 中的每个空格替换成"%20"。

示例:



输入:s = "We are happy."
输出:"We%20are%20happy."


解题思路:

  • 字符串由字符组成,首先将字符串转化成字符数组,然后遍历字符数组。
  • 如果需要将空格替换成其他字符串,就不能使用数组的下标直接替换的方式,因为被替换的内容不是一个字符。
  • 使用StringBuilder作为中间存储的数据结构,判断每个字符是否是空格,如果是,则向StringBuilder追加"%20",如果不是,则向StringBuilder追加当前字符。


package Algorithm;

public class Solution {

public static void main(String[] args) {
System.out.println(replaceSpace("We are happy."));
}

public static String replaceSpace(String s) {
char[] chars = s.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < chars.length; i++) {
if (chars[i] == ' ') {
sb.append("%20");
} else {
sb.append(chars[i]);
}
}
return sb.toString();
}
}


复杂度分析:

  • 时间复杂度:遍历使用O(N),每轮添加修改字符使用O(1)
  • 空间复杂度:StringBuilder都使用了线性的额外空间