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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue的双向绑定原理_vue中数据双向绑定的原理

    vue的双向绑定原理_vue中数据双向绑定的原理简析mvvm框架 目前angular,reat和vue都是mvvm类型的框架以vue为例 这里的vm 就是vue框架,它相当于中间枢纽的作用,连接着model 和view.当前台显示的view发生变化了,它会实时反应到viewModel上,如果有需要,viewModel 会通过ajax等方法将改变的数据传递给后台model 同时从后台model获取过来的数据,通过vm将…

    2022年10月18日
    2
  • jsonpath 判断是否包含_JSONPath介绍

    jsonpath 判断是否包含_JSONPath介绍/***@authoritguang*@create2017-12-1010:03**/@RunWith(SpringRunner.class)@SpringBootTest@Slf4jpublicclassJSONpathControllerTest{@Testpublicvoidtest(){Useruser=newUser(“itguang”,”123456″…

    2022年6月22日
    101
  • 大数据采集架构

    大数据采集架构概述一般来说,当在Hadoop集群上,有足够数据处理的时候,通常会有很多生产数据的服务器。这些服务器的数量上百甚至成千上万。小的数据还可以直接从应用程序写入HDFS,但庞大数量的服务器试着将海量数据直接写入HDFS或者HBase集群,会因为多种原因导致重大问题。所以这个中间系统(数据采集系统)就是将应用程序发送过来的信息转发到分布式的后台服务器集群上,ChuKwaChuKwa是…

    2022年6月17日
    27
  • 在互联网上,没有人知道你是一条狗?「建议收藏」

    在互联网上,没有人知道你是一条狗?「建议收藏」1993年,《纽约客》(TheNewYorker)杂志刊登一则由彼得·施泰纳(PeterSteiner)创作的漫画:标题是【OntheInternet,nobodyknowsyou’readog.】这则漫画中有两只狗:一只黑狗站在电脑椅上,爪子扶着键盘。它望向站在地上、表情迷茫的另一只狗,兴奋地说:「在互联网上,没人知道你是一条狗。(OntheInternet,nobodyknowsyou’readog.)画中那只狗的台词随即成了IT界广为流传的经典笑话。那个

    2022年5月14日
    111
  • countdown timer plus_Android10使用

    countdown timer plus_Android10使用AndroidCountDownTimer的使用

    2022年9月2日
    6
  • 关于ScriptManager.RegisterStartupScript 摘录

    关于ScriptManager.RegisterStartupScript 摘录参数备注:使用 RegisterStartupScript 方法,可为与部分页面呈现兼容且不具有MicrosoftAJAXLibrary依赖项的页面注册启动脚本块。仅

    2022年7月4日
    29

发表回复

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

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