Python 实现字符串反转的9种方法[通俗易懂]

在做leetcode的试题中,做到反转整数,就涉及到字符串反转,为了尽可能可以写出更多的方法,于是写下这篇文章 样例:如a=’123456789′ 反转成a=’987654321’第一种方法:使用字符串切片>>> a=’123456789′ >>> a = a[::-1]’987654321’第二种方法:使用reversed()…

大家好,又见面了,我是你们的朋友全栈君。

在做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                    # index = index - 1
        new_string += a_string[index] # new_string = new_string + character
    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

参考文章:Reverse a string in Python

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126655.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tomcat部署war包访问显示404

    tomcat部署war包访问显示404在eclipse导出的maven项目war包,放到tomcat下启动,顺利启动且无报错,但是浏览器访问该项目时显示404原因:未在server.xml中配置这几个项目,导致服务器查找不到解决方法:<HostappBase="webapps"autoDeploy="true"name="localhost"unpackWARs="true">…

    2022年6月10日
    216
  • 矩阵范数与矩阵的模

    矩阵范数与矩阵的模我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~矩…

    2022年5月15日
    56
  • 分别用冒泡法和选择法对10个整数排序_c语言数组从大到小冒泡排序

    分别用冒泡法和选择法对10个整数排序_c语言数组从大到小冒泡排序1.区别:      两者最大的区别在于算法本身。       冒泡法是相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可以作相对位置的调整。可以进行升序或降序排序。        选择法是每趟选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。2.冒泡法:…

    2022年10月19日
    0
  • SQL中row_number() over(partition by)详解「建议收藏」

    SQL中row_number() over(partition by)详解「建议收藏」row_number语法ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号。在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也需要专门一列用于预先排序以便于进行编号partitionby关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反…

    2022年6月14日
    26
  • c语言基础题库及详解答案_char和uint8

    c语言基础题库及详解答案_char和uint8uint32_t是一个32位的无符号整型。使用这个类型需要加上头文件#include<stdint.h>unsignedint32_t是错误的写法。%x是以16进制的形式来输出例子:我有一个32位的无符号整型的数,我想知道高16位和低16位相加的和是多少,结果以16进制输出?#include<stdio.h>#include<stdlib.h>#include<stdint.h>intmain(){uint3

    2022年9月3日
    3
  • js刷新当前页面方法「建议收藏」

    js刷新当前页面方法「建议收藏」js刷新当前页面js刷新当前页面在写JS代码时,用到JS来刷新当前页面的方法有几种,比如最常用的reload(),location等reload方法,该方法强迫浏览器刷新当前页面。语法:location.reload([bForceGet])参数:bForceGet,可选参数,默认为false,从客户端缓存里取当前页。true,则以GET方式,从服务端取最新的页面,相当于客户端点击F5(“刷新”)replace方法,该方法通过指定URL替换当前缓存在历史里(客

    2022年10月26日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号