牛客网_剑指offer_第二题替换空格_C++/C

本文介绍了一个C++函数,该函数能够将输入字符串中的所有空格替换为“%20”。文章首先统计了字符串中空格的数量,然后计算新字符串的长度,并从后向前逐个替换空格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

替换空格replaceSpace C++/C版本

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

思路分析

第1步:检测出空格的个数(可以考虑下是从前往后检测,还是从后往前检测哪个好)
第2步:将空格替换为%20,注意原先是有个空格,新字符串后只是增加了2个空格

代码块

#include<bits/stdc++.h>
using namespace std;
void replaceSpace(char *str,int length) {
//检测字符串是不是空字符串或者字符长度为0
    if(str==NULL||length<=0)//length==0--->length<=0
        return;
//统计字符串中的空字符的个数

         int blanknum=0;//空格字符数量
         int newlen=0;//定义新的字符串长度
         int oldlen=0;
    for(int i=0;str[i]!='\0';i++)
    {
        oldlen++;
        if(str[i]==' ')
        blanknum++;
   }
    newlen=oldlen+2*blanknum;//新的字符串长度
    //因为原先有个空格,所以只需要乘以2,不是3 
    //替换空格字符
    //需要判断新的字符串长度是否大于oldlen
    if(newlen>length)//length是给的数组最大长度 
        return;
    for(int i=oldlen;i>=0;i--)
    {
    //小于的话进行替换
        if(str[i]!=' ')
        str[newlen--]=str[i];
        else
        {
            str[newlen--]='0';
            str[newlen--]='2';
            str[newlen--]='%';
        }

    }   
}
int main()
{
    char str[50]="Welcome to my home!";
    replaceSpace(str,50);
    printf("%s\n",str);
    return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值