zoukankan      html  css  js  c++  java
  • 【剑指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, 即分隔所有。
  • 相关阅读:
    借书证信息管理系统,C语言实现
    以太坊 助记词提取 账户 公钥 私钥 最新实现可用。
    solc@0.6.3 web3@1.2.6 都是最新版本的,编译与部署示例
    ganache gas 错误
    MFC 记事本 文本编辑器
    课程设计 C语言 学生成绩管理系统
    cmake(.os .a)
    git recommend(alive)
    tensorflow tfrecoder read write
    300. 最长上升子序列
  • 原文地址:https://www.cnblogs.com/RebeccaG/p/11924724.html
Copyright © 2011-2022 走看看