因为看到移出移入,第一反应就是pop和append,所以想到用两个stack实现,但是要注意pop的时候从头pop所以要先倒序,pop完之后再反转成为正常的顺序,代表剩下的值,再和pop出的列表拼接起来,再用''.join将列表里的str类型的值输出成字符串 :将序列中的元素以指定的字符连接生成一个新的字符串。
注意 ''".join()和 .split()刚好是反着来的,一个把list里面的元素连接成字符串,一个把通过指定分隔符对字符串进行切片返回分割后的字符串列表。
# -*- coding:utf-8 -*-
class Solution:
def LeftRotateString(self, s, n):
# write code here
stack = []
s1 = []
res = ""
if s == "" or len(s) < n:
return ""
for i in s[::-1]:#先把s反转带入到s1才能得到正确顺序的pop()值
s1.append(i)
for i in range(n):
stack.append(s1.pop())
s = s1[::-1] + stack#s1 pop完了之后需要再次反转回来拼接
res = ''.join(s)
return res
class Solution:
def LeftRotateString(self, s, n):
# write code here
stack = []
s1 = []
res = ""
if s == "" or len(s) < n:
return ""
for i in s[::-1]:#先把s反转带入到s1才能得到正确顺序的pop()值
s1.append(i)
for i in range(n):
stack.append(s1.pop())
s = s1[::-1] + stack#s1 pop完了之后需要再次反转回来拼接
res = ''.join(s)
return res
最后如果不用''.join(s)的话
for i in s:
res = res + str(i)
res = res + str(i)
return res
用循环,就会多占用一些空间,但是也可行
用循环,就会多占用一些空间,但是也可行