美文网首页
剑指offer——面试题5:替换空格

剑指offer——面试题5:替换空格

作者: 金锡圭璧 | 来源:发表于2020-01-09 19:20 被阅读0次

1.题目描述:

请实现一个函数,把字符串中的每个空格替换成%20。例如,输入“we are happy.”,输出"we%20are%20happy."。

2.解题思路:

可以先遍历数组,统计出空格的个数,则新字符串的长度 = 旧字符串的长度 + 2 * 空格个数。然后使用双指针法,指针p1指向旧字符串的末尾,指针p2指向新字符串的末尾,从后往前进行拷贝。如果p1指向的字符为空格,则向p2所在的位置拷贝0、2、%,再递减指针。

3.代码实现:

public class Offer_5 {
    public static void main(String[] args) {
        String str = "we are happy.";
        System.out.println(ReplaceBlack(str));
    }

    private static String ReplaceBlack(String str) {
        int numOfBlack = 0;
        int p1, p2;

        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                numOfBlack++;
            }
        }
        p1 = str.length() - 1;
        p2 = 2 * numOfBlack + str.length();
        char[] result = new char[p2 + 1];

        while (p1 >= 0 && p2 >= p1) {
            if (str.charAt(p1) == ' ') {
                result[p2--] = '0';
                result[p2--] = '2';
                result[p2--] = '%';
                p1--;
            } else {
                result[p2--] = str.charAt(p1--);
            }
        }
        return String.valueOf(result);
    }
}

这个题如果要申请新的数组,其实用从前往后拷贝的方法也可以,若是输入参数为指针,则可以利用指针偏移的方式,不必再重新申请空间。

复杂度分析:
  • 时间复杂度:O(n),字符长度为n,则总的时间复杂度为O(n).
  • 空间复杂度:O(n),需要额外开辟长度为2n+空格个数大小的空间,总的空间复杂度为O(n)。

相关文章

  • 替换空格

    《剑指offer》面试题5:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“we...

  • LeetCode | 面试题05. 替换空格【剑指Offer】【

    LeetCode 面试题05. 替换空格【剑指Offer】【Easy】【Python】【字符串】 问题 力扣 请实...

  • 剑指Offer面试题5 替换空格

    题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经...

  • 【剑指offer】面试题5—替换空格

    一、题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy....

  • 剑指offer——面试题5:替换空格

    1.题目描述: 请实现一个函数,把字符串中的每个空格替换成%20。例如,输入“we are happy.”,输出"...

  • 剑指offer第二版-5.替换空格

    本系列导航:剑指offer(第二版)java实现导航帖 面试题5:替换空格 题目要求:实现一个函数,把字符串中的每...

  • [剑指offer] 替换空格

    本文首发于我的个人博客:尾尾部落 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符...

  • 剑指offer - 替换空格

    题目 请实现一个函数,把字符串中的每个空格都换成%20。例如:输入"We are happy",则输出“We%20...

  • 《剑指offer》替换空格

    问题: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换...

  • 剑指offer:替换空格

    题目分析 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替...

网友评论

      本文标题:剑指offer——面试题5:替换空格

      本文链接:https://www.haomeiwen.com/subject/uqhuactx.html