剑指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])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值