剑指offer—替换空格

剑指offer—替换空格

题目描述

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例 1:

输入:s = "We are happy."
输出:"We%20are%20happy."
思路n

先从左向右遍历,统计空格的个数为sum,将数组的长度扩大到length+2*sum,并用双指针完成空格的替换,具体操作如下:
指针①定位到原数组的最后一个位置,指针②定位到扩容后数组的最后一个位置:
1:若指针①的前字符为非空格,指针②位置填充指针①定位到的当前字符,指针①和指针②分别向左移动一位
2:若指针①的当前字符为空格,则指针②依次填充‘0’,‘2’,‘%’
向左移动指针①并继续上面1、2步骤,直到指针①遇到数组的左边界

代码实现
 string replaceSpace(string s) {
        int n = s.size();
        int sum = 0, i;
        for(i = 0; i < n; i++){
            if(s[i] == ' ') sum++;
        }
        i--;
        n = n + sum*2;
        s.resize(n);    //没有resize会报错
        for(int j = n-1;i >= 0; j--, i--){
            if(s[i] == ' '){
                s[j--] = '0';
                s[j--] = '2';
                s[j] = '%';
            }else{
                s[j] =  s[i];
            }
        }

        return s;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值