剑指0ffer 05.替换空格

该博客介绍了如何在一个字符串中将所有空格替换为 %20。通过计算空格数量,扩大字符串长度,使用双指针技巧,从字符串末尾开始遍历,遇到空格时插入%20,最终实现空格的替换。这种方法有效地处理了字符串中的空格问题。

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

目录

来源:力扣

 思路:

代码:


来源:力扣

 思路:

一个空格替换成三个字符,

  1. 先找出有多少个空格(n),扩增字符串,在字符串后面加(2xn)个空格

然后创建两个指针i,j 分别指向原来字符串末尾和现在字符串末尾

  1. 判断i指针指向不为空,将i指针指向的赋给j指针指向,i--,j--

  1. 当i指针指向空格时,i指针不移动,将j指针向前移动三格并分别赋“%20”

完成后 i--, j--

  1. 当i == j 时跳出循环

代码:

class Solution {
public:
    string replaceSpace(string s) {
    	int len = s.size();//原始字符串长度
        int count = 0;//空格数量
        for(int i = 0; i<s.size(); i++){
            if(s[i]==' ')count++;
        }
        s.resize(len+count*2);//重新设置字符串长度
        for(int i=len-1,j=s.size()-1;i<j;i--,j--){
            if(s[i]!=' ') //i不为空格 将i向j赋值
                s[j]=s[i];
            else{	      //i为空格 i不动 j向前移动两个并赋值‘%20’
                s[j]='0';
                s[j-1]='2';
                s[j-2]='%';
                j = j-2;
            }
        }
        return s;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值