zoukankan      html  css  js  c++  java
  • Python 实现字符串反转的9种方法

    在做leetcode的试题中,做到反转整数,就涉及到字符串反转,为了尽可能可以写出更多的方法,于是写下这篇文章

    样例:如 a='123456789' 反转成 a='987654321'

    第一种方法:使用字符串切片

    >>> a='123456789' 
    >>> a = a[::-1]
    
    '987654321'

    第二种方法:使用reversed() 可读行好,但速度较慢

    >>> ''.join(reversed('123456789'))
    '987654321'

    封装使用

    def reversed_string(a_string):
        return a_string[::-1]
    
    >>> reversed_string('123456789')
    '123456789'

    注意:

    python的str对象中没有内置的反转函数

    python字符串相关基础知识:

    1. python中,字符换是不可变,更改字符串不会修改字符串,而是创建一个新的字符串。

    2. 字符串是可切片,切片字符串会以给定的增量从字符串中的一个点(向后或向前)向另一个点提供一个新字符串。它们在下标中采用切片表示法或切片对象:

    # 下标通过在大括号中包含冒号来创建切片:
    string[start:stop:step]
    
    # 要在大括号外创建切片,您需要创建切片对
    slice_obj = slice(start, stop, step)
    string[slice_obj]

    第三种方法:循环从字符串提取数据,然后进行字符串拼接(慢)

    def reverse_a_string_slowly(a_string):
        new_string = ''
        index = len(a_string)
        while index:
            index -= 1                    
            new_string += a_string[index] 

        return new_string

    第四种方法:循环从字符串提取数据,写入到一个空列表中,然后使用join进行字符串拼接(慢)

    def reverse_a_string_more_slowly(a_string):
        new_strings = []
        index = len(a_string)
        while index:
            index -= 1                       
            new_strings.append(a_string[index])
        return ''.join(new_strings)

    第五种方法:使用字符串拼接(慢)

    def string_reverse(a_string):
        n = len(a_string)
        x=""
        for i in range(n-1,-1,-1):
            x += test[i]
        return x

    第六种方法:使用reduce

    reduce(lambda x,y : y+x, a_string)

    第七种方法:使用递归(慢)

    def rev_string(s): 
        if len(s) == 1:
            return s
    
        return s[-1] + rev_string(s[:-1])

    第八种方法:使用list() 和reverser()配合

    a_string='123456789'
    
    def rev_string(a_string):
        l=list(a)
        l.reverse()
        return ''.join(l)

    第九种方法:使用栈

    def rev_string(a_string):
        l = list(a_string) #模拟全部入栈
        new_string = ""
        while len(l)>0:
            new_string += l.pop() #模拟出栈
        return new_string
    

     原文:http://www.chenxm.cc/post/713.html

  • 相关阅读:
    win shift s截图不能用(已解决)
    阿里云ssl证书过期怎么解决 (免费SSL证书) 三步解决
    图解 Java 数据结构
    微信小程序简介
    序列化类外键字段的覆盖,十大接口序列化总结,视图家族
    response二次封装,夺标关系优化,多表序列化,十大接口
    内部类,drf响应类,序列化与反序列化
    drf以及django应用
    DRF框架知识总览
    实例成员:计算属性 监听属性以及vue的项目开发
  • 原文地址:https://www.cnblogs.com/chenxinming-top/p/9670891.html
Copyright © 2011-2022 走看看