python字符串循环左移
作者:RealEmperor 发布时间:2023-08-28 19:32:13
标签: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
来源:https://blog.csdn.net/weixin_42018258/article/details/80656572


猜你喜欢
- 【OpenCV】⚠️高手勿入! 半小时学会基本操作⚠️ 腐蚀膨胀概述OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今
- 目录wsgi 相关概念CGIWSGIASGIcgi 示例cgi脚本cgi服务实现wsgirefwsgi 小结小技巧python web开发中
- 本文研究的主要是python通过elixir包操作mysql数据库的相关实例,具体如下。python操作数据库有很多方法,下面介绍elixi
- Oracle的系统要求企业版:CPU最低PENTIUM200M推荐PENTIUMIII1G以上 内存最低128M推荐512M 硬盘空间系统盘
- golang数组去重利用map可以利用go中,map数据类型的key唯一的属性,来对数组去重将strSlice数组中重复的元素去掉,使其中的
- 比如下面一个listbinfo = ['lao','wang','python']我们通过h
- django的表单系统,分2种基于django.forms.Form的所有表单类的父类基于django.forms.ModelForm,可以
- 本文实例为大家分享了wxPython实现计算器的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-######
- **将Python程序(.py)转换为Windows可执行文件(.exe)第一步:安装pyinstaller打开cmd,输入 pip ins
- 支持lrc歌词,IE only 代码未加密且有详细注释,希望对做音乐页面的朋友有帮助。 如果大家还有什么好多播放器,告诉我,我好参
- 利用函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行。 其完整语法: GROUP_CONCA
- 如何解决bootStrapValidator bootStrap-select验证不可用,只要三步:思路:把多选下拉框的选中值,赋给一个隐藏
- 本文实例讲述了Python运算符重载用法。分享给大家供大家参考。具体分析如下:python中,我们在定义类的时候,可以通过实现一些函数来实现
- 前言最近在写nuxt项目时候每次新建页面都要去新建然后引入各种需要的依赖很是麻烦,所以想写一个脚本自动生成文件 省去手动新建现写下实现方法
- javascript实现翻页效果:<html> <head> <title>上下翻页看 - aspxho
- 在实际的项目中,能用别人写好的插件实现相关功能是最好不过,为了节约时间成本,因为有的项目比较紧急,没充分时间让你自己来写,即便写了,你还要花
- PySnooper 是一个非常方便的调试器。如果您正在试图弄清楚为什么您的Python代码没有按照您的预期去做,您会希望使用具有断点和监视功
- 如下所示:###方法1:用shift函数,不用通过循环import pandas as pdimport numpy as npimport
- 主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply先说说主键,主键是表里面唯一识别记
- 在Python语言中,Uincode字符串处理一直是一个容易让人迷惑的问题。许多Python爱好者经常因为搞不清Unicode、UTF-8还