数组练习(一):替换空格

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

 

上一篇:用c++实现bf算法


下一篇:阿里云ECS专有网络下安装flannel注意事项