剑指offer_面试题58_二 :左旋转字符串( python实现 )

一、题目描述

题目:左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。

  例如,输入字符串为“abcdefg”和 2,输出为“cdefgab”。

二、解题思路

  暂略。(此处主要作为书中python实现补充)

三、代码实现

  这里的代码在 牛客网剑指offer:左旋转字符串 已测试通过,具体如下:

# -*- coding:utf-8 -*-
class Solution:
    def LeftRotateString(self, s, n):
        # write code here
        if len(s)==0:
            return s
        arr = list(s)
        arr = self.Reverse(arr,0,n-1)
        arr = self.Reverse(arr,n,len(arr)-1)
        arr = self.Reverse(arr,0,len(arr)-1)
        returnStr = ''.join(arr)
        return returnStr
    def Reverse(self, arr, pBegin, pEnd):
        while pBegin<pEnd:
            arr[pBegin],arr[pEnd] = arr[pEnd],arr[pBegin]
            pBegin = pBegin + 1
            pEnd = pEnd - 1
        return arr

  当然,在Python代码中,还有更简单的实现方式。但我觉得,此类实现方式,在面试过程中,不一定是面试官想要的最终结果,体现不出算法的思想。当然在笔试中是没有问题的。

class Solution:
    def LeftRotateString(self, s, n):
        # write code here
        l = []
        l.append(s[:n])
        l.append(s[n:])
        return ''.join(l[::-1])

你可能感兴趣的:(算法面试,经典算法实现,算法面试题,左旋转字符串,面试,算法,python,剑指offer)