【剑指Offer】替换空格

题目描述

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

解题思路

遍历字符串,遇到空格,就把空格后面的所有数后移两个位置;

空格处放’%’,空出来的两个位置放’2’,’0’

代码实现

class Solution {
public:
    void replaceSpace(char *str, int length) {

        if (length <= 0 || str == NULL) return;

        for (int i = 0; i<length; i++)
        {
            if (str[i] == ‘ ‘)
            {
                // i 以后的字符均后移两位
                for (int j = length - 1; j>i; j--) {
                    str[j + 2] = str[j];
                }
                // 当前位变为%,新增出来的两位变为20
                str[i] = ‘%‘;
                str[i + 1] = ‘2‘;
                str[i + 2] = ‘0‘;
                // 跳过新增的两位
                i += 2;
                length += 2;
            }
        }
    }
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 15:31:31

【剑指Offer】替换空格的相关文章

[剑指OFFER] 替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 个人理解,应该是对空间复杂度有要求,如果没有要求,下面code就OK class Solution { public: string replaceSpace(string str) { string rtn; for(int i = 0; i < str.size(); i++) { if(str[i] == ' ') r

剑指offer替换空格

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 class Solution { public:     string replaceSpace(string str) {         stack<int> Mystack;     int length=str.length();     in

剑指offer——替换字符串

总结:先计算出总共有多少空格,count++:然后从后往前遍历,每遇到一个空格,count--: 替换空格 参与人数:2119时间限制:1秒空间限制:32768K 通过比例:20.23% 最佳记录:0 ms|8552K(来自  牛客游客) 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 完整代码: public class StringreplaceSpace { public

【剑指offer】空格替换

Question 设计一种方法,将一个字符串中的所有空格替换成 %20 .你可以假设该字符串有足够的空间来加入新的字符,且你得到的是"真实的"字符长度. Solution 1 需要额外的一个数组: class Solution { public: /** * @param string: An array of Char * @param length: The true length of the string * @return: The true length of new st

剑指offer—替换字符串中空格

题目: 实现一个函数,把字符串中的每个空格替换成"%20".加入输入"we are happy.",则输出"we%20are%20happy.". 时间复杂度为O(n^2) 基本思想:从前往后把字符串中的空格替换成%20. 假设字符串的长度为n,对每个空格字符,需要移动后面O(n)个字符,因此总的时间复杂度为O(n^2). 时间复杂度为O(n) 基本思想:先遍历找出空格总数,并计算出替换之后的字符串的总长度.然后从字符串的后面开始复制和替换. 所

剑指offer 替换字符串中的空格

void replaceSpace(char *str,int length) { if(str==NULL||length<=0) return; int originlen=0; int newlen=0; int space=0; while(str[originlen]!='\0') { if(str[originlen]==' ') space++; originlen++; } originlen++; newlen=originlen+2*space; if(originlen==

剑指Offer-2.替换空格(C++/Java)

题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 题意明确,就是将一个字符串中的每个空格替换成“%20”,可以新建一个空字符串,遍历原字符串,遇到空格就添加“%20”,否则就将字符添加进新串中. 不过这种方法需要额外的空间,我们可以在原字符串上进行操作. 如果从头开始遍历字符串,遇到空格将其替换成为“%20”,需要将后面的字符进行后移操作,时间复杂度很高. 所以我们可以先

剑指Offer02 替换空格

1 /************************************************************************* 2 > File Name: 02_Replace_Blank.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年08月24日 星期三 01时28分33秒 6 *************************************

剑指Offer 目录

剑指Offer01 杨氏数组寻值 剑指Offer02 替换空格 剑指Offer03 逆序输出链表&链表逆序

【剑指offer】第四题 替换空格

/** * 剑指offer 第4题 替换空格 * 特点:1.先扫描串中的空格数,计算好替换后的长度 * 2.使用双指针,从后面开始向前替换,避免从前开始每次替换后就要移动后面的所有的数据 * 测试用例:特殊:有多个空格 * 错误:数组长度不够,字符串为空 * */ package javaTrain; public class Offer4 { public static void main(String[] args) { String a = "Hello I am Daisy Dong!&