【问题标题】:How to make the first and the last characters become the first and the second character and so on如何使第一个和最后一个字符成为第一个和第二个字符等等
【发布时间】:2026-01-02 14:05:01
【问题描述】:

我正在尝试创建一个函数,它首先使您的字符串向后(因此,“Hello,world”变为“dlrow ,olleH”),然后第一个和最后一个字符成为字符串中的第一个和第二个字符,第二个和倒数第二个字符成为字符串中的第三个和第四个字符,依此类推。

例如

"Hello, world" 变成 "dHlerlolwo ,"(注意所有标点符号、特殊字符、空格等都是一样的)

“0123456789”变为“9081726354”。

到目前为止,我只知道如何使字符串向后:

def encrypt(s):
    return s[::-1]

【问题讨论】:

  • 从字符串拆分开始

标签: python string python-3.x


【解决方案1】:

压缩邮件和反向邮件。遍历两者并加入以形成两条消息中交替字符的消息。

def encrypt(message):
    reversed_message = reversed(message) # better than slicing for lazy evaluation

    alternating_chars = (
        ''.join((i, j)) 
        for i,j in zip(message, reversed_message)
    )
    alternating_chars = ''.join(
        list(alternating_chars)
    )

    return alternating_chars[:len(message)]

print encrypt('you can\'t start flying cars to try and get yourself noticed')

您可以通过压缩消息和反向消息的长度超过原始长度的一半来提前优化功能。

【讨论】:

    【解决方案2】:

    只需在 for 循环中添加字符:

    def encrypt(s):
        reversed = s[::-1]
        ret_str = ""
        length = len(reversed)
        for i in range(length // 2):
            ret_str +=  reversed[i] +reversed[length - 1 - i]
    
        if(length % 2 == 1):
            ret_str += reversed[length // 2 + 1]
        return ret_str
    
    print(encrypt("Hello, world"))
    print(encrypt("0123456789")) 
    

    输出:

    dHlerlolwo ,
    9081726354
    

    【讨论】:

      最近更新 更多