zoukankan      html  css  js  c++  java
  • Python编程题6--字符串每隔3个字符翻转

    题目

    针对一个只含数字的字符串,对其每3个数字进行一次翻转,如下:

    字符串:123456789 ==> 翻转后:321654987

    如果最后待翻转的不足3个字符,也同样进行翻转,如下:

    字符串:12345678 ==> 翻转后:32165487

    实现思路1

    • 遍历字符串
    • 每间隔3个字符,对其进行翻转,然后拼接到新字符串
    • 遍历结束后,判断新字符串的长度,是否和原字符串一致
    • 如果不一致则需要对剩余部分字符进行翻转,再拼接到新字符串

    代码实现

    def demo(s):
        new_str = ""
        for i in range(len(s)):
            if (i + 1) % 3 == 0:
                new_str += s[i-2:i+1][::-1]
        if len(s) != len(new_str):
            new_str += s[len(new_str):][::-1]
        return new_str
    
    old_str = "12345678"
    print(demo(old_str))
    

    实现思路2

    • 遍历字符串,步长为3
    • 准备一个列表,每3个字符,作为一个字符串添加到列表中
    • 遍历列表,对列表中的每个字符串进行翻转,再通过 join() 方法用依次拼接

    代码实现

    def demo(s):
        temp = []
        for i in range(0, len(s), 3):
            temp.append(s[i:i+3])
        return "".join([i[::-1] for i in temp])
    
    old_str = "12345678"
    print(demo(old_str))
    

    两行代码实现

    old_str = "12345678"
    print("".join([old_str[i:i+3][::-1] for i in range(0, len(old_str), 3)]))
    
  • 相关阅读:
    maven pom 详细配置
    寻找二叉树最远的叶子结点
    控制两个线程的启动顺序
    tensorflow之神经网络实现流程总结
    ubuntu服务器安装FTP服务
    ubuntu服务器 安装 seafile 个人网盘
    软件工程实践总结作业~
    Beta 答辩总结
    Beta 冲刺 (7/7)
    Beta 冲刺 (6/7)
  • 原文地址:https://www.cnblogs.com/wintest/p/13738134.html
Copyright © 2011-2022 走看看