Leetcode-剑指offer05-替换空格

题目地址(05. 替换空格)

https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/

题目描述

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

 

示例 1:

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

 

限制:

0 <= s 的长度 <= 10000

前置知识

  • 暂无

思路

  • 先开辟一个新的字符数组出来,对老的字符串进行遍历,如果碰到空格,则在新的字符数组里面插入**“%20”**,最后转化为字符串返回

关键点

  • 因为Java中String类型不可变,所以需要开辟一个新的字符数组,所以空间复杂度为O(n),在遍历的过程中,需要两个个移动的指针,一个指向字符串,一个指向字符数组,最后还需要将字符数组转化成字符串输出

代码

  • 语言支持:Java

Java Code:


class Solution {
    
    
    public String replaceSpace(String s) {
    
    
        //求字符串长度length
        int len = s.length();
        //构建一个新的字符数组
        char[] ch = new char[len * 3];
        //用来移动的指针
        int size = 0;
        for (int i = 0; i < len; i++) {
    
    
            //得到字符串每个索引处的字符
            char a = s.charAt(i);
            if (a == ' ') {
    
    
                ch[size++] = '%';
                ch[size++] = '2';
                ch[size++] = '0';
            } else {
    
    
                ch[size++] = a;
            }
        }
        //将字符数组转化成字符串对象
        String str = new String(ch, 0, size);
        return str;
    }
}

复杂度分析

令 n 为数组长度。

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( n ) O(n) O(n)

猜你喜欢

转载自blog.csdn.net/weixin_48969816/article/details/114418675