替换空格

本文介绍了一种将字符串中空格替换为%20的算法实现。通过计算原字符串长度和空格数量,确定新字符串长度,从后向前遍历并替换空格,最终完成字符串的转换。

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

题目: 请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“we are happy.”,则输出“we%20are%20happy.”


解题思路:

  • 首先求出原字符串的长度length,然后求出替换空格后字符串的新长度newLength;然后将两者作为字符串的下标,指向对应位置;如下图所示:

在这里插入图片描述

  • 然后从后向前依次复制字符串的内容,每复制一个字符,对应length--;newLength--;
  • 每当length下标对应的字符为空格时,就把空格内容替换为%20,同时执行一次length--,3次newLength--
  • length==newLength时,结束。

整个过程图示如下:

在这里插入图片描述


代码实现:

	public static void replaceBlank(char[] string){
        if (string==null||string.length<=0)
            return;
        int length= string.length;
        //originalLength为字符串string的实际长度
        int originalLength=0;
        //字符串中的空格数量
        int numberOfBlank=0;
        int i=0;
        while (string[i]!='\0'){
            ++originalLength;
            if (string[i]==' ')
                ++numberOfBlank;
            ++i;
        }
        //将字符串中的空格替换成 %20,之后字符串的新长度
        int newLength=originalLength+numberOfBlank*2;
        //如果字符串的新长度大于length,则退出,因为替换之后会造成数组越界
        if (newLength>length)
            return;
        int indexOfOriginal=originalLength;
        int indexOfNew =newLength;
        while (indexOfOriginal>=0&&indexOfNew>indexOfOriginal){
            //如果是空格,则将其替换成 %20 并将indexOfNew向前移动3位
            if (string[indexOfOriginal]==' '){
                string[indexOfNew--]='0';
                string[indexOfNew--]='2';
                string[indexOfNew--]='%';
            }
            //如果不是空格则将indexOfNew向前移动一格
            else {
                string[indexOfNew--]=string[indexOfOriginal];
            }
            --indexOfOriginal;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值