剑指offer--面试题4:替换空格



题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 
python3实现:
 
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        if s is None or len(s)==0:
            return ""
        result = []
        for ch in s:
            if ch == ' ':
                result.append("%20")
            else:
                result.append(ch)
        return "".join(result)

 

 

c++实现:

//length为牛客系统规定字符串输出的最大长度,固定为一个常数
class Solution {
public:
    //直接原地修改原字符串
    void replaceSpace(char *str,int length) {
        if(str==NULL||length<=0)
            return;
        //统计空格数
        int cntOfSpaces = 0, oldLen = 0;
        for(int i=0; str[i]!='\0'; i++){
            oldLen += 1;
            if(str[i]==' ')
                cntOfSpaces += 1;
        }
        int newLen = oldLen+cntOfSpaces*2;
        if(newLen>length)//不加这一句也能ac
            return;
        int idx = newLen, i = oldLen;//不是newLen-1,因为还得算上最后的'\0'
        while(i>=0){
            if(str[i]==' '){
                str[idx--]='0';
                str[idx--]='2';
                str[idx--]='%';
            }else{
                str[idx--]=str[i];
            }
            i--;
        }
    }
};

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值