• 【剑指offer】05-替换空格


    题目:

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


    1、遍历整个字符串,找到空格,挨个替换

    class Solution:
        # s 源字符串
        def replaceSpaceI(self, s):
            """自己写的,还用循环去挨个判断,想复杂了"""
            t = list(s)  # 字符串变列表
            n = len(t)
            for i in range(0, n):
                if t[i] == ' ':
                    t[i] = "%20"
            return ''.join(t)  # 列表变字符串

    遇到的问题:

      1)一开始直接用字符串s[i] = '%20',会报错。TypeError: 'str' object does not support item assignment

        是因为python不像C语言一样,可以直接对字符串中的某个字符进行操作,必须将字符串转换成列表,才可以对下标为i的字符进行操作。

        具体见下面博客:https://blog.csdn.net/u013238941/article/details/89279888

       2)写range(0, n-1),代码通过率只有25%,如果最后一个字符为空格,就不会被替换成%20.

    字符串&列表相互转换的方法:

    """字符串转列表"""
    str1 = "hi hello world"
    print(str1.split(" "))
    
    # 输出:['hi', 'hello', 'world']
    """列表转字符串"""
    l = ["hi","hello","world"]
    print(" ".join(l))
    
    # 输出:hi hello world

    殊不知,这样完全是我想复杂了啊喂!python中有内置的替换函数啊!一行就可以搞定了!

    2、内置的replace函数

    class Solution:
        # s 源字符串
        def replaceSpaceII(self, s):
            """其实一个内置函数replace就可以解决问题!"""
            return s.replace(' ', '%20')

    replace()语法:

    replace(old, new[, max])
    
    old -- 将被替换的子字符串。
    new -- 新字符串,用于替换old子字符串。
    max -- 可选字符串, 替换不超过 max 次

    3、将字符串以空格为基准分隔开,再将%20连接进字符串

    class Solution:
        # s 源字符串
        def replaceSpaceIII(self, s):
            return '%20'.join(s.split(' '))

    join()语法:

    'sep'.join(seq)
    
    sep:分隔符。可以为空
    seq:要连接的元素序列、字符串、元组、字典
    上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

    split()语法:

    split(str="", num=string.count(str))
    
    str -- 分隔符,默认为所有的空字符,包括空格、换行(
    )、制表符(	)等。
    num -- 分割次数。默认为 -1, 即分隔所有。
  • 相关阅读:
    二维动态规划(2)
    细节是否真的打败爱情,十年后你还会爱我吗?
    C++的四种cast操作符的区别类型转换
    纯虚函数
    二维动态规划
    1,2,...n n个数m个丢失,找出丢失的数
    虚拟内存管理技术
    C++ 面试题总结
    【转】图的邻接链表 adjacent list of graph
    CIOCPServer的数据结构定义及内存池方案
  • 原文地址:https://www.cnblogs.com/RebeccaG/p/11924724.html
Copyright © 2020-2023  润新知