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

    xiaoxiao2022-07-05  168

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

    题目描述原因分析常见思路调用re模块总结

    题目描述

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

    原因分析

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

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

    常见思路

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

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

    二、replace的使用 代码:

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

    三、遍历 即遇到空格进行替换,但是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] = ' ' 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(' ', ' ', s)

    总结

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

    最新回复(0)