左旋转字符串python实现

本文提供三种Python代码实现字符串右移算法,包括原始数组操作、模运算优化及分段反转方法,详细阐述每种算法的原理和实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原帖地址:http://blog.youkuaiyun.com/v_JULY_v/article/details/6322882


在这里贴上自己写的python代码实现,具体算法讲解请转到原帖


'''
Created on 2012-2-27

@author: xidianwx@126.com
'''

def rightshift1(arr,n,k):
    arr2 = list(arr)
    while k>0:
        t = arr2[n-1]
        j = n-1
        while j>0: 
            arr2[j] = arr2[j-1]
            j = j-1
        
        arr2[0] = t
        k = k-1

    return ''.join(arr2)

def rightshift2(arr,n,k):
    arr2 = list(arr)
    k = k%n
    while k>0:
        t = arr2[n-1]
        j = n-1
        while j>0: 
            arr2[j] = arr2[j-1]
            j = j-1
        
        arr2[0] = t
        k = k-1

    return ''.join(arr2)

def reverse(arr, start, end):
    arrs = list(arr)
    while start < end:
        
        temp = arrs[end]
        arrs[end] = arrs[start]
        arrs[start] = temp
        start += 1
        end -= 1
    
    return ''.join(arrs)

def rightshift3(arr,n,k):
    k %= n
    arr1 = reverse(arr,0,n-k-1)
    arr2 = reverse(arr1,n-k,n-1)
    arr3 = reverse(arr2,0,n-1)
    
    return arr3

def leftshift3(arr,n,k):
    k %= n
    return rightshift3(arr,n,n-k)
    


if __name__ == "__main__":
    s = 'abcd1234'
    print s
    print rightshift1(s,8,2)
    print rightshift2(s,8,18)
    print rightshift3(s,8,2)
    print leftshift3(s,8,2)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值