替换空格

剑指 Offer 05. 替换空格

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

  使用python做的时候直接调用replace函数即可;

  使用c++做这道题的时候莫名的好多string函数不能使用,比如append等;所以字符串拼接的时候我直接使用的加号;

  代码如下:

  1. python
class Solution(object):
    def replaceSpace(self, s):
        """
        :type s: str
        :rtype: str
        """
        return s.replace(" ","%20")
  1. C++
class Solution {
public:
    string replaceSpace(string s) {
        string strb="";
        for(int i = 0;i<s.length();i++)
        {
            if(s[i] == ' ')
            {
                strb +="%20";
            }
            else
            {
                strb+=s[i];
            }
        } 
        return strb;
    }
};

  在运行时间和内存消耗方面,C++表现出更加明显地优势;

  另外把一位前辈的代码bia在这儿(仅供学习,绝无抄袭之意),这段代码可以实现原地替换;

// class Solution {
// public:
//     string replaceSpace(string s) {
//         int count = 0, len = s.size();
//         // 统计空格数量
//         for (char c : s) {
//             if (c == ' ') count++;
//         }
//         // 修改 s 长度
//         s.resize(len + 2 * count);
//         // 倒序遍历修改,注意循环中i和j的关系
//         for(int i = len - 1, j = s.size() - 1; i < j; i--, j--) {
//             if (s[i] != ' ')
//                 s[j] = s[i];
//             else {
//                 s[j - 2] = '%';
//                 s[j - 1] = '2';
//                 s[j] = '0';
//                 j -= 2;
//             }
//         }
//         return s;
//     }
// };

注意学习上面代码中遍历字符串的方法:

for (char c : s)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值