python实现字符串的反转,Python中字符串反转

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: