leetcode_day05

原题链接:https://leetcode-cn.com/problems/reverse-string/

题目描述:

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

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

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

思路:将原来列表元素,反向添加至原列表的后面,然后删除前面的len(原列表)个元素,剩下的就是新添加的元素——即:反向元素。

关键:(1)range()函数,可以倒序输出

     (2)删除元素时,列表长度一直在变,如何确保删除前length个元素?

      A:永远只删除首个元素,类似于pop(),直到列表长度恢复到原始值。

   (3)最开始,使用origin_str = origin_str[length:],希望截取列表的后半段,一步到位,但是报错。

      原因是:origin_str[length;]这种方式,实际上是在复制到了一新的列表,并没有在原列表上操作。

代码:

 1 class Solution:
 2   def reverseString(self, origin_str):
 3     #origin_str = list(origin_str)
 4     length = len(origin_str)
 5     #print(origin_str)
 6     for i in range(length-1, -1, -1):
 7       ob = origin_str[i]
 8       origin_str.append(ob)
 9       #print(origin_str)
10 
11     #origin_str = origin_str[length:]
12     while len(origin_str) != length:
13       del origin_str[0]
14     print(origin_str)
15 #return origin_str

猜你喜欢

转载自www.cnblogs.com/tommyngx/p/10467718.html
今日推荐