剑指offer第二版刷题面试题5:替换空格(Python版本)

剑指offer第二版刷题面试题5:替换空格(Python版本)

题目描述

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

原因分析

在网络编程中,URL参数中需要包含特殊字符(‘#’或者空格等),可能导致服务器端无法正确解析。需要将特殊字符转化为服务器识别的字符。

转换规则: ‘%’后加上ASCII码的两位16进制的表示;
空格的ASCII码:32;即16进制的0x20,故本题需要替换为‘%20’。

常见思路

一、分割再替换
1.首先判断字符串是否为空
2.将字符串按照“‘ ’”(空格)来分割,并调用Python中关于字符串的“.join()”。
代码:

// # -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        if not s:
            return ""
        return '%20'.join(s.split(' '))

二、replace的使用
代码:

// # -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        if not s:
            return ""
        return s.replace(' ', '%20')
        # 注意是‘ ’,不是‘’;

三、遍历
即遇到空格进行替换,但是str在Python中是不可变数据类型,可先转为list操作;
代码:

// # -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        if not s:
            return ""
        for i in range(len(s)):
            if s[i] == ' ':
                s[i] = '%20'
        return ''.join(s)     

调用re模块

在学习正则表达式的时候,除了掌握基本的匹配单、多字符等,re模块中的search、match、findall、sub都挺好用的。

代码:

// # -*- coding:utf-8 -*-
import re
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        if not s:
            return ""
        return re.sub(' ', '%20', s) 

总结

其实这些方法相比其他语言,其中几种都是借助Python本身的优势,split、re.sub等,不需要像一般的语言统计具体的空格个数再遍历,自己感觉很方便。这是自己第一篇处女博客文,写的一般,大家随意指正吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值