python解决正/逆向旋转数组

题目

【问题描述】

在两行中分别输入一个字符串s和整数n,定义一个函数将字符串s循环向右移动n位,n为负数时左移。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

若s为空串’‘,则不论n为多少,均输出’‘

【输入形式】

【输出形式】

【样例输入】

如 s=‘123456’

 n=3

【样例输出】

输出结果:456123

解法

s = list(input())
n = int(input())
l = len(s)
t = [] # temp
if l == 0 or l == 1:
    print(''.join(s))
else:
    if n > 0: #正向移动
        for j in range(l):
            t.append('#')
        n %= l  # 去周期
        for i in range(0, l):
            if i + n <= l - 1:
                t[i + n] = s[i]
            else:
                t[i + n - l] = s[i]

    else: # 逆向移动
        for j in range(l):
            t.append('#')

        for i in range(0, l):
            if i + n >= 0:
                t[i + n] = s[i]
            else:
                t[i + n + l] = s[i]

print(''.join(t))

类比方阵沙路法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值