python字符串循环左移
2019-03-28 10:59
686 查看
本文实例为大家分享了python字符串循环左移的具体代码,供大家参考,具体内容如下
字符串循环左移
给定一个字符串S[0…N-1],要求把S的前k个字符移动到S的尾部,如把字符串“abcdef”前面的2个字符‘a'、‘b'移动到字符串的尾部,得到新字符串“cdefab”:即字符串循环左移k位。
循环左移k位等价于循环右移n-k位。算法要求:
时间复杂度为 O(n),空间复杂度为 O(1)。
分析思路:
暴力移位:
每次循环左移1位,调用k次即可
时间复杂度O(kN),空间复杂度O(1),不符合要求
三次拷贝:
S[0…k] → T[0…k]
S[k+1…N-1] → S[0…N-k-1]
T[0…k] →S[N-k…N-1]
时间复杂度O(N),空间复杂度O(k),不符合要求
三次翻转:
(X'Y')'=YX
如:abcdef
X=ab X'=ba
Y=cdef Y'=fedc
(X'Y')'=(bafedc)'=cdefab
时间复杂度O(N),空间复杂度O(1),符合要求
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 字符串、列表、while循环
- python-循环(for、while)、判断、字符串格式化
- Python练习题(列表、字符串、循环)
- Python【基础:数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set】注意事项(与java,c比较)
- Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块
- Python入门-30、31、32、33、34、35:字符串补充,跳出循环(break、continue),文件(写、读),面向对象的编程(类)
- python 字符串和整型组合,while 循环
- 一个小学奥数题的python实现(全排列,字符串循环移位,统计元素)
- Python学习笔记Ⅱ —— 判断、逻辑运算、循环、字符串切片
- Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set
- python 循环(if,for,while)简单语法 以及对字符串的操作
- python字符串丶循环分支打造温度转换
- Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set
- python笔记4 - 索引,切片,字符编码转换函数,字符串的属性方法,字符串格式化表达式,占位符,基于字典的字符串格式化,循环语句
- Python 字符串 循环
- python 基础-----数字,字符串,if while 循环 数据类型的转换简单介绍
- python基础总结二:判断语句、循环语句、字符串遍历、以及列表、元组、字典的简单使用 。
- python字符串英雄技能,内存情况,循环补充,replace
- python笔记5 - 字符串格式化表达式,while语句嵌套,for循环,break,continue,死循环
- Python学习 Day 3 字符串 编码 list tuple 循环 dict set