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如果不考虑题目中的“就地修改输入数组”,可以用一个中间列表来实现。
从列表末尾向前遍历,可以用以下两种方式定义索引
def reverseString_1(self,s):
想法:借助一个中间变量temp,然后从S的尾部提取出来,把元素附加到temp上。
:参数s:
:返回:
temp=[]
对于范围内的I(透镜):
临时追加(s[len(s)-1-i])
返回温度
def reverseString_2(self,s):
想法:与方法4相同,但有另一种实现方式(与问题8中方法2所用的反向循环相同)
:参数s:
:返回:
temp=[]
对于I in range (len(s)-1,-1,-1): # in range表示索引范围,len(s)-1表示遍历的第一个元素(即从最后一个元素开始遍历);
#第一个-1表示最后一个位置,但由于遍历范围的右侧没有闭合,所以这里实际上是最后遍历的第一个元素;
#秒-1表示步长,每次为-1,即从后向前遍历。
临时追加(s[i])
返回temp方法2考虑一下:
实际上,倒串可以转化为“首尾元素串交换”,如:第一位和最后一位交换,第二位和最后一位交换,第三位和最后一位交换。
[1,2,3,4,5,6]
[6,5,4,3,2,1]这样可以定义两个指针,一个从第一个地方向后遍历,另一个从末端向前遍历;
然后,在每次遍历中交换两个位置的元素,直到遍历完中间的元素。
定义反向限制(自身,s):
:类型s: List[str]
:rtype: None不返回任何内容,而是就地修改s。
I=0 #第一个指针,从头开始遍历
J=len(s)-1 #秒指针,从尾部开始遍历
While j i: # If j i,一直循环,直到2个指针相遇。
S[i],s[j]=s[j],s[i] #在2个位置交换元素
i=1
j -=1
s方法3这种方法比较迂回,提交时由于超时(系统给出的数组太长)而失败。但是自测的时候给几个数组,可以正常逆序输出。
思路如下:既然是逆序输出,那么第一个和第二个元素可以互换,然后第二个和第三个元素可以互换……直到第一个元素移动到最后一个位置;
但这还没有结束。只是把第一个元素移到了最后。你需要重复上面的步骤,然后将原来的第二个元素(现在是第一个元素)移动到倒数第二个位置(注意:此时不能移动最后一个元素)。
按照上面的步骤,把所有元素移动一次,就大功告成了。
定义反向限制(自身,s):
想法:
:类型s: List[str]
:rtype: None不返回任何内容,而是就地修改s。
n=0
当n个透镜:
i=0
对于范围(1,len(s)-n)中的j:
s[i],s[j]=s[j],s[i]
i=1
n=1
返回方法4使用切片实现反向输出。
你书房里的问题没人回答?边肖创建了一个Python学习交流QQ群:857662006。
找志同道合的朋友互相帮助,群里也有不错的视频学习教程和PDF电子书!
定义反向限制(自身,s):
想法:切片
S[:-1]表示反转s中的元素。
S[:]表示阵列中的所有子模块。
S[:]=s[:-1]表示将原数组反转,赋给s中每个对应的位置。
S=s[:-1]表示将S反转赋给新对象S,与原修改标题不一致。
:参数s:
:返回:
s[:]=s[:-1]
返回方法5使用reverse()方法,该方法将反转原始列表(注意:reverse仅对列表有效)
def reverseString_6(self,s):
:参数s:
:返回:
反向开关()
s但是reverse()方法的源代码,你会发现它实际上就是所使用的切片,如下
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。