剑指offer(2):替换空格

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

class Solution {
public:
    void replaceSpace(char *str,int length) {
        int newlength = 0, blank_number = 0, str_len = 0, tail = 0;
        for(str_len = 0; str[str_len] != ‘\0‘; str_len++)
        {
            if(str[str_len] == ‘ ‘)
                blank_number += 2;
        }

        newlength = str_len + blank_number;
        if(newlength > length)
            return;

        str[newlength] = ‘\0‘;
        tail = newlength - 1;
        for( auto i = str_len - 1; i >= 0; i--)
        {
            if( str[i] == ‘ ‘)
            {
                str[tail--] = ‘0‘;
                str[tail--] = ‘2‘;
                str[tail--] = ‘%‘;
            }
            else
                str[tail--] = str[i];
        }
    }
};

原文地址:https://www.cnblogs.com/heifengli/p/8884545.html

时间: 2024-08-29 11:04:53

剑指offer(2):替换空格的相关文章

剑指offer 《替换空格》

本题来自<剑指offer> 替换空格 题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 思路: 方案一:空间优先,在原数组的基础上进行替换,没替换一次就将后面的字符串向后挪两个位置 step1:查询空格的个数,在此基础上申请空格数两倍的位置 step2:从后面向前遍历,如果遇到空格就加入‘’02%‘’,否则就继续挪动非空格字符,直到空格遍历完.代码采用了c++编程 方案二:可申

《剑指offer》替换空格

题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. Solution: #include <iostream> using namespace std; void replaceBlank(char str[],int length) { if(str==NULL||length<0) return ; int originalLength=0; int numberOfB

剑指OFFER之替换空格

题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 输入: 每个输入文件仅包含一组测试样例.对于每组测试案例,输入一行代表要处理的字符串. 输出: 对应每个测试案例,出经过处理后的字符串. 样例输入: We Are Happy 样例输出: We%20Are%20Happy Code: #include <stdio.h> #include <stdlib.h> voi

【剑指Offer】替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 解题思路 遍历字符串,遇到空格,就把空格后面的所有数后移两个位置: 空格处放'%',空出来的两个位置放'2','0' 代码实现 class Solution { public: void replaceSpace(char *str, int length) { if (length <= 0 || str == N

《剑指Offer》替换空格(将字符串中的空格替换为%20)

题目: 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为 We Are Happy.则经过替换之后的字符串为 We%20Are%20Happy. 思路: 这种替换问题要考虑是否会覆盖原字符串,若是在源字符串上直接替换. 看到这个问题我觉得很多人都会想到直接从头开始替换,即遇到空格就将其替换为%20,每次都要将空格后的字符后移两个字节.这种解法的时间复杂度为O(n^2)!!! 另外一种较好的解法是从后往前替换,具体做法是从头遍历计算所有空格数,计算出总的长度. 该解

剑指offer:替换空格

##题目:请实现一个函数,把字符串中的每个空格替换成%20.例如输入"We are happy.",则输出"We%20are%20happy.". 最容易想到的是,从头到尾扫描,每次碰到空格就替换.但是时间复杂度为o(n2). 时间复杂度为o(n)的解法是: 首先遍历字符串,统计出字符串中空格的总数,然后计算出替换之后的字符串的总长度.然后准备2个指针,P1,P2,.P1,指向原串的末尾,P2指向新串的末尾.然后向前移动,逐个把P1指向的字符复制到P2指向的位置,遇

剑指Offer 2. 替换空格 (字符串)

题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 题目地址 https://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155&tPage=1&rp=2&ru=%2Fta%2Fcoding-interviews&qru=%2F

剑指 Offer——2. 替换空格

题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 思路与实现 解法: 先遍历一遍字符串,这样就能统计出字符串中空格的总数,并可以由此计算出替换之后的字符串长度. 每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上2*空格的数目. 我们从字符串的后面开始复制和替换,首先准备两个指针,P1和P2,P1指向原始字符串的末尾,P2指向替换之后字符串的末尾.

剑指offer系列——替换空格?

Q:请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. C:时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M T: 我这是开辟了一个新的字符串帮助,实际上如果字符串较大就并不好. 讨论区主要方法: 1.从后往前插入,这样不需要另辟新的空间. void replaceSpace(char *str,int length) { int oldlen

牛客网-《剑指offer》-替换空格

C++ 1 class Solution { 2 public: 3 void replaceSpace(char *str,int len) { 4 int cnt = 0; 5 for (int i = 0; i < len; i++) { 6 if (str[i] == ' ') cnt++; 7 } 8 int idx = len + cnt * 2 - 1; 9 for (int i = len - 1; i >= 0; i--) { 10 if (str[i] == ' ') {