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(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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
时间: 2019-03-05
python列表元素循环左移_python字符串循环左移相关推荐
- python字符循环左移_python字符串循环左移
本文实例为大家分享了python字符串循环左移的具体代码,供大家参考,具体内容如下 字符串循环左移 给定一个字符串S[0-N-1],要求把S的前k个字符移动到S的尾部,如把字符串"abcde ...
- python列表元素交换位置_python删除列表元素5种方法,你会的是错误法还是最优解?...
删除列表元素很多同学想当然的认为不就是循环遍历加上if判断再del吗?真的有这么简单吗? 还是直接上代码看案例吧: import time# 删除下面列表中所有张姓元素,输出的结果应该是['李老大', ...
- python列表元素为中文_python入门基础教程之Python list列表修改元素
python提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个). 修改单个元素 修改单个元素非常简单,直接对元素赋值即可.请看下面的例子: nums = ...
- python列表元素比较大小_python列表怎么比较大小
Python中可以使用cmp()函数比较两个列表的大小. cmp()函数语法: cmp(list1, list2) 参数: list1 -- 比较的列表.list2 -- 比较的列表. 返回值: 如果 ...
- python列表元素都加倍_关于python列表增加元素的三种操作方法
关于python列表增加元素的三种操作方法 1.insert方法,该方法包含两个参数,第一个参数为插入的位置参数,第二个参数为插入内容 a = [0,0,0] b = [1,2,3] a.insert ...
- python 列表、字典转json字符串
python 列表.字典转json字符串 代码 import json data1 = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] data ...
- python列表元素如何求和
python实现列表对应元素求和的两种方法. 方法一:采用zip()方法: 1 2 3 4 5 6 7 8 9 10 11 12 # -*- coding: utf-8 -*- import math ...
- python 列表中的数字转字符串_python 将列表中的字符串转为数字
python 将列表中的字符串转为数字 转自:https://www.jb51.net/article/86561.htm 本文实例讲述了Python中列表元素转为数字的方法.分享给大家供大家参考,具 ...
- python列表元素零的移动_python列表多行
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 这个列表推导式共有145列: memberdef_list = and std: ...
最新文章
- No subject
- 【Android 安全】使用 360 加固宝加固应用 ( 加固工具准备 | 生成签名 APK | 加固操作 | 反编译验证加固效果 )
- Pytorch中图像预处理相关函数
- 2013.10u-boot移植之增加nand保存环境变量
- java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)
- 信息学奥赛一本通(1125:矩阵乘法)
- 继爱奇艺之后,腾讯视频、优酷宣布:取消剧集超前点播服务
- 程序员放弃月薪2W的工作,改行做销售,结果垫底,网友:瞎折腾
- 软件测试--环境讲解
- iOS 学习 - 18.TextField 自定义菜单事件,复制和微信分享
- eplan2.6安装教程
- c语言fltk图形库,c-free-C/C++集成开发环境-c-free下载 v5.0官方版-完美下载
- 晶体管放大电路之应用
- 泛型编程和元编程概念(先学泛型编程再学元编程)
- 为你的整轨APE音乐制作CUE文件(图文)
- 免费下载 [discuz!插件] 404页死链优化SEO V2.6
- 从敏思博客的倒闭事件看历史重现...
- VUE输入 身份证 号,获取出生年月日
- 从零到一,全套搜狗收录教程分享
- Linux Shell查找下一个