首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

替换空格

剑指Offer 05.替换空格 https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/ 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。...首先扩充数组到每个空格替换成"%20"之后的大小。 然后从后向前替换空格,也就是双指针法,过程如下: i指向新长度的末尾,j指向旧长度的末尾。 ?...从后向前填充元素,避免了从前先后填充元素要来的 每次添加元素都要将添加元素之后的所有元素向后移动。 时间复杂度,空间复杂度均超过100%的用户。 ?..."%20"之后的大小 s.resize(s.size() + count * 2); int sNewSize = s.size(); // 从后先前将空格替换为...StringBuilder 单线程使用,比较快,选不选都行 StringBuilder sb = new StringBuilder(); //使用 sb 逐个复制 str ,碰到空格替换

4.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    替换空格

    我们可以先遍历一次字符串,这样就能统计出字符串中空格的总数,并可以由此计算出替换之后的字符串的总长度。每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上2乘以空格数目。...此时P1和P2指向同一位置,表明所有空格都已经替换完毕。 ? 注:图中带有阴影的区域表示被移动的字符。(a)把第一个指针指向字符串的末尾,把第二个指针指向替换之后的字符串的末尾。...(b)依次复制字符串的内容,直至第一个指针碰到第一个空格。(c)把第一个空格替换成'%20',把第一个指针向前移动1格,把第二个指针向前移动3格。(d)依次向前复制字符串中的字符,直至碰到空格。...(e)替换字符串中的倒数第二个空格,把第一个指针向前移动1格,把第二个指针向前移动3格。...请实现一个函数,把A2中所有的数字插入到A1中并且所有的数字是排序的。

    2.8K60

    空格替换

    1.空格替换 来源: lintcode-空格替换 问题描述 描述 设计一种方法,将一个字符串中的所有空格替换成 %20 。...你的程序还需要返回被替换后的字符串的长度。...样例 对于字符串”Mr John Smith”, 长度为 13 替换空格之后,参数中的字符串需要变为”Mr%20John%20Smith”,并且把新长度 17 作为结果返回。...挑战 在原字符串(字符数组)中完成替换,不适用额外空间 解决思路 这道题的暴躁版本呢,就是依次遍历,当遇到空格时,将空格后的字符依次后移两位,这样就腾出了3个空位,插入%20即可。...以i遍历原字符串,当i位置字符不等于空格,令j位置=i位置,如果i位置为空格,则给j,j-1,j-2位置依次放置0,2,%。 当i<0时停止循环。

    2.3K50

    空格替换

    描述 设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。 你的程序还需要返回被替换后的字符串的长度。...样例 对于字符串 "Hello World" , 长度为 11 替换空格之后,参数中的字符串需要变为 "Hello%20World",并且把新长度 17 作为结果返回。...思路 循环遍历字符数组 碰到空字符则将空字符后所有的字符向后移动两位(假设字符数组有足够长度),防止添加 %20 时,造成覆盖而导致数据丢失....将空字符以及后两位共 3 个位置 替换成 %20 将字符数组的长度 +2 代码 public int replaceBlank(char[] string, int length) {...碰到空格要将字符数组的所有字符整体向后移动两位。 LintCode:空格替换

    2.6K80

    从后往前替换空格

    题目描述 将一个字符串中的空格替换成 “%20”。 Input: "A B" Output: "A%20B" 解题思路 ① 在字符串尾部填充任意字符,使得字符串的长度等于替换之后的长度。...因为一个空格替换成三个字符(%20),所以当遍历到一个空格时,需要在尾部填充两个任意字符。 ② 令 P1 指向字符串原来的末尾位置,P2 指向字符串现在的末尾位置。...P1 和 P2 从后向前遍历,当 P1 遍历到一个空格时,就需要令 P2 指向的位置依次填充 02%(注意是逆序的),否则就填充上 P1 指向字符的值。...replaceSpace(StringBuilder str) { //P1指向原来的末尾 int P1 = str.length() - 1; //有一个空格...} } //追加完后,P2指向现在的末尾 int P2 = str.length() - 1; //从后往前遍历,如果发下空格就填充

    1K20
    领券