因为看到移出移入,第一反应就是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

最后如果不用''.join(s)的话
        for i in s:
            res = res + str(i)
        return res
用循环,就会多占用一些空间,但是也可行