Python实现字符串循环左移:三次翻转法详解

Dylan
Dylan
发布时间:2026-10-13| 6人浏览过
原创

本文介绍如何在Python中实现字符串循环左移k位。通过对比暴力移位和三次拷贝法,重点讲解三次翻转算法,该算法利用(X'Y')'=YX原理,在O(n)时间复杂度和O(1)空间复杂度下完成操作。由于Python字符串不可变,代码示例使用列表模拟并展示具体实现。

Python字符串循环左移概述

本文分享了一个Python实现字符串循环左移的具体代码示例,供读者参考学习。

字符串循环左移

假设有一个字符串S,索引范围为0到N-1,目标是将S的前k个字符移动到S的末尾。例如,对于字符串“abcdef”,将其前2个字符‘a’和‘b’移至尾部,结果变为“cdefab”,这被称为字符串循环左移k位。此外,循环左移k位在数学上等价于循环右移N-k位。

算法性能要求:

必须满足时间复杂度为O(n),且空间复杂度控制在O(1)。

算法思路与复杂度分析

以下是具体的思路分析:

暴力移位法:

该方法每次仅左移1位,重复执行k次即可完成。虽然空间复杂度为O(1),但其时间复杂度高达O(kN),不符合题目对效率的要求。

三次拷贝法:

具体步骤为:先将S的前k个字符S[0…k]拷贝至临时数组T[0…k];接着将S[k+1…N-1]拷贝至S的起始位置S[0…N-k-1];最后将T[0…k]拷贝至S的尾部S[N-k…N-1]。此方法时间复杂度为O(N),但空间复杂度为O(k),同样不符合O(1)空间的要求。

三次翻转法:

核心原理为(X'Y')'=YX,其中'表示翻转操作。以“abcdef”为例:设X=“ab”,Y=“cdef”,则X'=“ba”,Y'=“fedc”。先分别翻转X和Y得到“bafedc”,再整体翻转一次,即(bafedc)',最终结果为“cdefab”。该算法时间复杂度为O(N),空间复杂度为O(1),完全符合题目要求。

Python代码实现与测试

Python参考代码如下:


# 在Python中字符串类型 'str' 不支持给它的item赋值,我们这里用list代替字符串

def leftloop(s, k):
 """
 字符串循环左移
 :param s: 字符串数组
 :param k: 字符串循环左移k位
 :return:
 """
 if s is None:
 return
 n = len(s)
 if n < k:
 return
 reverse(s, 0, k - 1)
 reverse(s, k, n - 1)
 reverse(s, 0, n - 1)


def reverse(s, i, j):
 """
 翻转
 :param s: 字符串数组
 :param i: 翻转开始位置
 :param j: 翻转结束位置
 """
 if s is None or i < 0 or j < 0 or i >= j or len(s) < j + 1:
 return
 while i < j:
 temp = s[i]
 s[i] = s[j]
 s[j] = temp
 i += 1
 j -= 1


if __name__ == '__main__':
 s = "abcdef"
 print(s)
 li = list(s);
 leftloop(li, 2)
 print(''.join(li))

程序运行输出结果如下:

abcdef cdefab

以上是关于Python字符串循环左移的全部内容,希望本示例能对读者有所帮助,欢迎继续支持本站获取更多技术资源。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。