• 算法|替换空格


    题目:

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

    方法一:

        使用python自带的replace方法。

    # -*- coding:utf-8 -*-
    # -*- python3.6.6 -*-
    # -*- JluTiger  -*-
    # -*- 替换空格 -*-
    class Solution:
        # s 源字符串
        def replaceSpace(self, s):
            # write code here
            return s.replace(" ","%20")
    
    if __name__=="__main__":
        s="we are famliy"
        answer = Solution().replaceSpace(s)
        print(answer)

    方法二:

       对空格使用split,再使用“%20”连接。

    class Solution:
        # s 源字符串
        def replaceSpace(self, s):
            # write code here
            return '%20'.join(s.split(' '))
    if __name__=="__main__":
        s="we are famliy"
        answer = Solution().replaceSpace(s)
        print(answer)

    方法三:

      由于替换空格后,字符串长度需要增大。先扫描空格个数,计算字符串应有的长度,从后向前一个个字符复制(需要两个指针)。这样避免了替换空格后,需要移动的操作。

    class Solution:
        # s 源字符串
        def replaceSpace(self, s):
            # write code here
            #计算有多少个空格
            num_space = 0
            for i in s:
                if i == ' ':
                    num_space += 1
            #新的字符串的长度
            new_length = len(s) + 2 * num_space
            index_origin = len(s) - 1
            index_new = new_length - 1
            #新的字符串
            new_string = [None for i in range(new_length)]
            #按照从后往前的顺序将%20填入
            while index_origin >= 0 & (index_new > index_origin):
                if s[index_origin] == ' ':
                    new_string[index_new] = '0'
                    index_new -= 1
                    new_string[index_new] = '2'
                    index_new -= 1
                    new_string[index_new] = '%'
                    index_new -= 1
                else:
                    new_string[index_new] = s[index_origin]
                    index_new -= 1
                index_origin -= 1
            return ''.join(new_string)
    
    if __name__=="__main__":
        s="we are famliy"
        answer = Solution().replaceSpace(s)
        print(answer)
  • 相关阅读:
    Unity3D脚本修改默认编码界面
    Winform异步初始化UserControl的问题
    Windows API实现移动窗体
    BackgroundWorder控件
    Winform复杂界面异步加载
    TabControl设置选项卡的大小
    VS2010尝试运行项目时出错,无法启动程序
    winform开发-CheckedListBox控件
    tomcat配置https访问
    用户svn密码自定义
  • 原文地址:https://www.cnblogs.com/jlutiger/p/9908431.html
Copyright © 2020-2023  润新知