Day046|Python编程300例之旋转字符串

2021-04-11  本文已影响0人  龙渊的宝藏

今天是Andy学Python的第46 天哦! 

大家好,我是Andy。 

01.

项目需求

旋转列表是把列表从右向左旋转。

旋转字符串则是把字符串从左向右旋转。

循环右移1位,就是把字符串最右端的字符取出,然后再把这个字符追加到字符串的首位。

以此类推,循环右移k位,就是把字符串右端的k位字符取出,然后再把这些字符按顺序逐一追加到列表的左端。

输入str = "abcdefg", k = 3, 输出"efgabcd".

输入str = "abcdefg", k = 0, 输出"abcdefg".

输入str = "abcdefg", k = 1, 输出"gabcdef".

输入str = "abcdefg", k = 2, 输出"fgabcde".

02.

拆解任务

与旋转列表方法相同,采用切片方法分别取出字符串的两部分,再拼接。

右移与左移不同的地方在于,采用-k反向取值。

03.

版本1.0 

该方法基本满足项目4个例子。

04.

书上代码

# 书上代码

class Solution:

    # 参数s:字符列表

    # 参数k:整数

    # 返回值:无

    def rotateString(self, s, k):

        if len(s) > 0:

            k = k % len(s)

        temp = (s + s)[len(s) - k : 2 * len(s) - k]

        for i in range(len(temp)):

            s[i] = temp[i]

# 主函数

if __name__ == '__main__':

    s = ["a", "b", "c", "d", "e", "f", "g"]

    k = 3

    solution = Solution()

    solution.rotateString(s, k)

    print("输入:s = ", ["a", "b", "c", "d", "e", "g"], " ", "k = ",k)

    print("输出:s = ", s) 

05.

思考

书上代码增加了k = k % len(s),应该是考虑偏移量如果超过字符串长度的情况。

验证偏移量大于字符串长度,确实函数失灵。

修改个人版本2.0

# 旋转字符串

# Andy 2021-04-02

def rotate_str(str_a, k):

    k = k % len(str_a)

    return str_a[-k:] + str_a[:-k]   # 切片,将原字符串一分为二,再拼接

# 主函数

a = "abcdefg"

print(rotate_str(a, 3))

print(rotate_str(a, 0))

print(rotate_str(a, 1))

print(rotate_str(a, 15))

51Day Day up!

向上向善,日进一步!

每天学习,努力成长!

定个小目标,开启成长的旅程,遇见更好的自己。

这是我们和自己的约定,许诺自己不负韶华。

路虽远,行则将至;事虽难,做则必成。

成长的最好时机,就是当下。

上一篇 下一篇

猜你喜欢

热点阅读