将字符串中所有空格替换为20%

本文介绍了一种遍历字符串并统计空格数量的方法,通过双指针技术将空格替换为20%,实现字符串的原地修改。示例代码演示了如何对包含空格(此处以'-'表示)的字符串进行替换。

问题:将字符串中所有空格替换为20%

思路:遍历字符串,统计空格数。根据空格数开辟空间,引入两个指针p1,p2,p1指向字符串结尾部分,p2指向开辟空间后的尾部;将p1指向的字符复制到p2处,遇到空格用20%替换。

为了便于显示空格表示为‘-’

#include <iostream>
#include <string.h>

using namespace std;

void replaceWith(char * s,int lenght)
{
    if(s==NULL)
        return;
    int spaceNum=0;
    int p1,p2,newLength;
    //统计空格数
    for(int i=0;i<strlen(s);i++)
    {
        if(s[i]=='-')
        {
            spaceNum++;
        }
    }
    newLength=strlen(s)+2*spaceNum;
    //如果s空间小于被替换所需长度,返回
    if(newLength>lenght)
        return;
    //从后面开始移动字符串进行替代
    p2=newLength;
    p1=strlen(s);
    while(p1<p2)
    {
        if(s[p1]=='-')
        {
            s[p2--]='%';
            s[p2--]='0';
            s[p2--]='2';
            p1--;
        }
        else
        {
            s[p2--]=s[p1--];
        }
    }
}

int main()
{
    char a[100]="How-are-you?";
    char b[100]="The-cat-is-so-cute-that-i-like-it-so-much.";
    replaceWith(a,100);
    replaceWith(b,100);
    cout<<a<<endl;
    cout<<b<<endl;
    return 0;

}

输出结果:

How20%are20%you?
The20%cat20%is20%so20%cute20%that20%i20%like20%it20%so20%much.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值