如何在Python中使用for/while循环实现字符串右旋转?
实现字符串右旋转的Python解决方案
你需要实现字符串的右旋转操作——每次将字符串的最后一个字符移至开头,循环执行该操作得到完整序列。以字符串"Burrow"为例,期望输出右旋转后的所有结果,但当前代码仅能实现左旋转,尝试负索引未成功,以下是正确的实现方法:
现有左旋转代码
def main(): word = "Burrow" a = word for i in range(len(word)): c = a[i:] + a[:i] print(c) if __name__ == "__main__": main()
右旋转的两种实现方式
方法一:使用负索引切片
左旋转逻辑是取a[i:] + a[:i],右旋转则需要每次把最后i个字符移到字符串头部。直接利用负索引切片即可实现,注意循环从1开始(i=0时会得到原字符串,无旋转意义):
def main(): word = "Burrow" for i in range(1, len(word)+1): rotated = word[-i:] + word[:-i] print(rotated) if __name__ == "__main__": main()
执行后输出"Burrow"的右旋转序列:
wBurro
owBurr
rowBur
rrowBu
urrrowB
Burrow
方法二:通过长度计算切片位置
如果对负索引不熟悉,也可以用字符串长度计算分割点,逻辑和负索引完全一致:
def main(): word = "Burrow" str_len = len(word) for i in range(1, str_len+1): split_pos = str_len - i rotated = word[split_pos:] + word[:split_pos] print(rotated) if __name__ == "__main__": main()
该方法通过正索引计算分割位置,效果和方法一完全相同,更适合对切片逻辑不熟悉的场景。
逻辑说明
左旋转是从左到右逐个将字符移至末尾,右旋转则是从右到左逐个将字符移至开头。两种实现均利用Python字符串的切片特性,对于短字符串来说效率足够。
内容的提问来源于stack exchange,提问作者rg4s
相关产品推荐
相关产品推荐

