请实现一个函数,把字符串 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都使用了线性的额外空间