翻转单词顺序-python

本文介绍了如何使用Python解决LeetCode中的单词翻转问题,详细解析了算法思路与代码实现,帮助理解字符串操作技巧。
#1.①翻转单词中的所有字符 ②翻转单词中字符顺序
def reverse(s, start, end):
    while start < end:
        s[start], s[end] = s[end], s[start]
        start += 1
        end -= 1
def ReverseSentence(s):
    if not s:
        return s
    s = list(s)
    reverse(s, 0, len(s) - 1)
    start, end = 0, 0
    while start < len(s):
        if s[start] == '':
            start += 1
            end += 1
        elif end == len(s) or s[end] == ' ':
            reverse(s, start, end - 1)
            end += 1
            start = end
        else:
            end += 1
    return "".join(s)

print(ReverseSentence("I am a student"))
2.字符串旋转操作
#左旋转操作是把前面若干个字符串转移到字符串尾部
#以"abcdefg"为例,可以将其分为两部分,因为想把前两个字符翻转到后面,可以把前两个字符分为一部分,后面所有的分为一部分。
# 先分别翻转这两部分得到bagfedc,接着在翻转整个字符串得到cdefgab,刚好就是把原始字符串左旋转两位的结果
def LeftRotateString(s, k):
    if s is not None:
        s = list(s)
    if len(s) > 0 and k > 0 and k < len(s):
        reverse(s, 0, k - 1)
        reverse(s, k, len(s) - 1)
        reverse(s, 0, len(s) - 1)
    return "".join(s)

print(LeftRotateString("abcdefg", 2))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值