剑指OFFER之替换空格

题目描述:

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

输入:

每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。

输出:

对应每个测试案例,出经过处理后的字符串。

样例输入:
We Are Happy
样例输出:
We%20Are%20Happy

Code:
#include <stdio.h>
#include <stdlib.h>

void ReplaceBlank(char str[]){
    if(str==NULL)
        return;
    int originalLength=0;
    int numberOfBlank=0;
    int i=0;
    while(str[i]!=‘\0‘){
        ++originalLength;
        if(str[i]==‘ ‘){
            ++numberOfBlank;
        }
        ++i;
    }
    int newLength=originalLength+2*numberOfBlank;
    while(originalLength>=0){
        if(str[originalLength]!=‘ ‘){
            str[newLength--]=str[originalLength--];
        }else{
            --originalLength;
            str[newLength--]=‘0‘;
            str[newLength--]=‘2‘;
            str[newLength--]=‘%‘;
        }
    }
}

int main()
{
    char str[1000000];
    while(gets(str)){
        ReplaceBlank(str);
        printf("%s\n",str);
    }
    return 0;
}

/**************************************************************
    Problem: 1510
    User: lcyvino
    Language: C
    Result: Accepted
    Time:10 ms
    Memory:1820 kb
****************************************************************/

时间: 2024-08-27 19:40:53

剑指OFFER之替换空格的相关文章

剑指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. 解题思路 遍历字符串,遇到空格,就把空格后面的所有数后移两个位置: 空格处放'%',空出来的两个位置放'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] == ' ') {