Python中五种实现字符串反转的方法

 更新时间:2022年05月20日 09:11:44   作者:Python热爱者  
这篇文章主要介绍了Python中五种实现字符串反转的方法,编写一个函数,其作用是将输入的字符串反转过来。下面文章关于其详细介绍,需要的小伙伴可以参考一下

前言

一道题目是实现一个反转字符串的函数,具体如下:

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

我们可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例 1:

输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]

示例 2:

输入:["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]

自己动手操作了一下,大概有如下几种方式

方法1

如果不考虑题目中所说的“原地修改输入数组”,可以借助一个中间列表来实现

从列表的尾部向前遍历,可以通过如下2种方式定义索引:

def reverseString_1(self, s):
"""
思路:借助一个中间变量temp,然后从s的尾部提取,把元素追加到temp中
:param s:
:return:
"""
temp = []
for i in range(len(s)):
temp.append(s[len(s)-1-i])
return temp

def reverseString_2(self, s):
"""
思路:和方法4一样,不过换个实现方式(和第8题方法2用到的倒序循环一样)
:param s:
:return:
"""
temp = []
for i in range(len(s)-1, -1, -1): # range中的表示索引范围,len(s)-1表示遍历的第一个元素(也就是从最后一个元素开始遍历);
# 第一个-1表示最后一个位置,不过由于遍历范围右边不闭合,所以这里其实最终遍历的是第一个元素;
# 第二个-1表示步长,每次-1,即从后往前遍历
temp.append(s[i])
return temp

方法2

思考一下:

反转字符串其实可以转换为“首尾元素串互换”,如:第1位和倒数第1位互换、第2位和倒数第2位互换、第3位和倒数第3位互换

[1,2,3,4,5,6]
[6,5,4,3,2,1]

这样的话,可以定义2个指针,一个从首位遍历往后遍历,一个从末尾往前遍历;

然后每次遍历都交换2个位置的元素,一直遍历到中间元素;

def reverseString(self, s):
"""
:type s: List[str]
:rtype: None Do not return anything, modify s in-place instead.
"""
i = 0 # 第一个指针,从首部遍历
j = len(s) - 1 # 第二个指针,从尾部遍历

while j > i: # 如果j>i就一直循环,直到2个指针相遇
s[i], s[j] = s[j], s[i] # 交换2个位置的元素
i += 1
j -= 1
return s

方法3

这个方法比较绕,而且在提交时,由于超时导致并未通过(系统给出的数组太长导致),不过自己测试时给了几个数组,也能正常倒序输出

思路如下:既然是倒序输出,可以把第1个和第2个元素互换,然后第2个和第3个互换…直到把第1个元素挪到了最后的位置;

但是此时还未结束,这只是把第1个元素挪到了最后,还需要重复上述步骤,再把原先的第2个元素(现在的第1个元素)挪到倒数第2个位置(注意:此时的最后一个元素不能动)

按照上述步骤,把所有元素都挪动一遍,就完成了

def reverseString(self, s):
"""
思路:
:type s: List[str]
:rtype: None Do not return anything, modify s in-place instead.
"""
n = 0
while n < len(s):
i = 0
for j in range(1, len(s)-n):
s[i], s[j] = s[j], s[i]
i += 1
n += 1
return s

方法4

利用切片来实现倒序输出:

def reverseString(self, s):
"""
思路:切片
s[::-1]表示反转s中的元素
s[:]表示数组中所有子模块
s[:]=s[::-1]表示将原数组反转后赋值给s中每一个对应的位置
s=s[::-1]表示将s反转后赋值给新的对象s,与题意原地修改不符
:param s:
:return:
"""
s[:] = s[::-1]
return s

方法5

使用reverse()方法,它会对原列表进行反向排序(注意:reverse只对list有效)

def reverseString_6(self, s):
"""
:param s:
:return:
"""
s.reverse()
return s

不过reverse()方法的源码,会发现它其实就是利用的切片,如下:

Python:五种方法实现“字符串反转”_倒序

到此这篇关于Python中五种实现字符串反转的方法的文章就介绍到这了,更多相关python字符串反转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python基础入门学习笔记(Python环境搭建)

    python基础入门学习笔记(Python环境搭建)

    这篇文章主要介绍了python基础入门学习笔记,这是开启学习python基础知识的第一篇,夯实Python基础,才能走的更远,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 基于scrapy实现的简单蜘蛛采集程序

    基于scrapy实现的简单蜘蛛采集程序

    这篇文章主要介绍了基于scrapy实现的简单蜘蛛采集程序,实例分析了scrapy实现采集程序的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • Python如何抓取天猫商品详细信息及交易记录

    Python如何抓取天猫商品详细信息及交易记录

    这篇文章主要为大家详细介绍了Python如何抓取天猫商品详细信息及交易记录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Python之py2exe打包工具详解

    Python之py2exe打包工具详解

    下面小编就为大家带来一篇Python之py2exe打包工具详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解

    VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解

    这篇文章主要介绍了VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法,较为详细的分析了VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的具体步骤、相关命令与操作注意事项,需要的朋友可以参考下
    2019-07-07
  • Python+OpenCV六种实时图像处理详细讲解

    Python+OpenCV六种实时图像处理详细讲解

    OpenCV常用的图像处理为阈值二值化、边缘检测、轮廓检测、高斯滤波、色彩转换、调节对比度。本文主要介绍了利用Python和OpenCV对实时图像进行上述六种操作的详细讲解,感兴趣的可以了解一下。
    2021-11-11
  • 利用python绘制立体玫瑰花代码示例

    利用python绘制立体玫瑰花代码示例

    这篇文章主要给大家介绍了关于如何利用python绘制立体玫瑰花的相关资料,利用python绘制一朵玫瑰,快拿去送给你心爱的人吧!需要的朋友可以参考下
    2023-09-09
  • Python运行DLL文件的方法

    Python运行DLL文件的方法

    这篇文章主要介绍了Python运行DLL文件的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • python数据分析:关键字提取方式

    python数据分析:关键字提取方式

    今天小编就为大家分享一篇python数据分析:关键字提取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python基础之函数

    python基础之函数

    这篇文章主要介绍了python的函数,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下
    2021-10-10

最新评论