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)]))
原文地址:https://www.cnblogs.com/wintest/p/13738134.html