数据结构与算法--3.字符串的旋转

题目:

  • A是含有n个元素的数组,如果可以申请到最大内存,那么把A从位置i开始旋转是比较简单的。例如:A:a,b,c,d,e.其中i=3,旋转后的字符串A为:d,e,a,b,c
  • 要求设计一个时间复杂度为O(n),空间复杂度为O(1)的算法,实现字符串A从给定位置开始旋转。

思路:

  • 步骤一:首先将字符串整体旋转;
  • 步骤二:将旋转后的字符串按照旋转中心,分为两部分,再分别旋转两个部分。
"""
题目:
A是含有n个元素的数组,如果可以申请到最大内存,那么把A从位置i开始旋转是比较简单的。例如:A:a,b,c,d,e.其中i=3,旋转后的字符串A为:d,e,a,b,c
要求设计一个时间复杂度为O(n),空间复杂度为O(1)的算法,实现字符串A从给定位置开始旋转
"""
"""
思路:
步骤一:首先将字符串整体旋转;
步骤二:将旋转后的字符串按照旋转中心,分为两部分,再分别旋转两个部分。
"""#设计函数,将将整个字符串倒转
def  roundString(S):begin = 0end = len(S) - 1ss = list(S)#交换begin和end执行的字符while begin < end:temp = ss[begin]ss[begin] = ss[end]ss[end] = tempbegin += 1end -= 1return ''.join(ss)# #测试代码
# s ="abcdef"
# #旋转后的字符串应该是fedcba
# s = roundString(s)
# print(s)#将给定字符串从位置i开始旋转
def  rotateString(s,i):#首先将整个字符串倒转,产生数组s0 = roundString(s)#倒转后,整个字符分为前半部分的n-i个字符,后半部分的i个字符#第一部分:??t1 = s0[0:len(s0)-i]print(t1)#第二部分:??t2 = s0[len(s0)-i:]print(t2)# 分别将两个部分旋转s1 = roundString(s0[0:len(s0)-i])s2 = roundString(s0[len(s0)-i:])#将旋转后的两个部分合并return s1 + s2s ="abcdef"
i = 4
#旋转后的字符串应该是efabcd
s = rotateString(s,i)
print(s)

运行结果:

fe
dcba
efabcd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三网融合情况下,实时语音通信技术解决之道

随着技术和标准的不断成熟,伴随着“三网合一”的大潮,VoIP可望成为下一代电信基础设施结构的杨心,使未来各电信业务综合统一在IP网络上成为可能,导致数据的融合和未来电信市场的重组,并带来新的经济模式和价值链。 Internet在全世界范围内的快速发展和语音信号处理技术的进步,促…

ipv6相对于ipv4的改进

v更大的地址空间&#xff1a;16字节&#xff0c;128位v首部的简化&#xff1a;只有7个固定域&#xff0c;撤消了有关分段的域和校验和域&#xff0c;以便更快地处理分组&#xff0c;提高路由器的吞吐量缩短延时。v更好地支持选项&#xff1a;选项是有次序的&#xff0c;以便路由…

轻量高效的开源JavaScript插件和库 【转】

图片布局轮播图弹出层音频视频编辑器字符串表单存储动画时间其它加载器构建工具测试包管理器CDN图片 baguetteBox.js - 是一个简单易用的响应式图像灯箱效果脚本。demoLightgallery.js - 是一个功能齐全的JavaScript图像灯箱插件。demoviewerjs - 是一个图像预览插件。democrop…

Linux内核中的常用宏container_of其实很简单【转】

转自&#xff1a;http://blog.csdn.net/npy_lp/article/details/7010752 开发平台&#xff1a;Ubuntu11.04 编 译器&#xff1a;gcc version 4.5.2 (Ubuntu/Linaro4.5.2-8ubuntu4) Container_of在Linux内核中是一个常用的宏&#xff0c;用于从包含在某个结构中的指针获得结构本…

mysql concat例子_MYSQL中CONCAT详解

concat()函数1. 功能&#xff1a;返回结果为连接参数产生的字符串。如有任何一个参数为NULL &#xff0c;则返回值为 NULL。2. 语法concat(str1, str2,...)3. 例子案例一&#xff1a;mysql> select concat(苹果,香蕉,梨子);------------------------------| CONCAT(苹果,香蕉…

常见的状态响应码

200&#xff1a;请求正常&#xff0c;服务器正常的返回数据 301&#xff1a;永久重定向。比如在访问www.jingdong.com的时候&#xff0c;会重定向到www.jd.com。 302&#xff1a;临时重定向。比如在访问一个需要登录的界面时&#xff0c;而此时没有登录&#xff0c;那么就会重定…

软件行业为什么那么多项目经理

记得听谁说过&#xff0c;软件行业的项目经理太滥了&#xff0c;二十几岁的毛头小伙子&#xff0c;动不动就是项目经理&#xff0c;手下没几个人&#xff0c;管的也没几个事&#xff0c;在其他行业&#xff0c;项目经理一般都是四五十岁的老头子做&#xff0c;要联系这&#xf…

ipv6的表示方法

v冒分十六进制表示法X:X:X:X:X:X:X:X 其中X表示地址中16位二进制数的十六进制值 例&#xff1a;FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 v零压缩法如其中有多个连续的零&#xff0c;则可用零压缩法 如 &#xff1a;1080:0000:0000:0000:0008:0800:200C:417A 可写成&am…

mysql php7安装配置_centos7无网络下安装部署php7.1.33+mysql5.7.28+apache2.4.6-Go语言中文社区...

centos7无网络下安装部署php7.1.33mysql5.7.28apache2.4.6一、1、先ping www.baidu.com&#xff0c;root账户下&#xff0c;如果未联网&#xff0c;创建目录&#xff0c;把提前下载好的rpm包拷贝到rpm目录下如图&#xff1a;(如果没有安装包请查看我的另一篇教程下载这些安装包…

webkit渲染

2019独角兽企业重金招聘Python工程师标准>>> 参考链接 理解WebKit和Chromium 简明魔法学院 Chrome软件渲染 WebKit渲染基础 Webkit 渲染基础 Webkit不是浏览器,它是一个渲染引擎 软件渲染 硬件渲染(GPU加速) 会触发GPU加速的属性 CSS3 3D transformation, trans…

element ui中dialog相关问题

一&#xff0c;今天需要在dialog里面引入另一个页面&#xff0c;就是打开dialog显示该页面&#xff08;把页面放到dialog中&#xff09;&#xff0c;引入的语句如下&#xff1a; <iframe src"view?pathrkdj_b" ></iframe> 二&#xff0c;使用table组件时…

数据结构与算法--4.使用堆栈模拟队列

问题&#xff1a; 队列的插入和删除遵循先入先出的原则&#xff0c;而堆栈遵循后进先出的原则。用两个堆栈模拟队列&#xff0c;要求实现时不能分配超过O&#xff08;1&#xff09;的内存&#xff0c;时间复杂度必须是o&#xff08;m&#xff09;。 思路&#xff1a; 用两个…

IT行业的你,在成本部门还是利润部门

题外话&#xff1a;本文应该引起项目管理者和开发人员的思考&#xff1a;如何进行薪酬管理&#xff1f;如何规划职业生涯&#xff1f; 生在IT行业&#xff0c;发现周围很多朋友对薪酬问题有疑问&#xff0c;因为这种不解&#xff0c;导致经常带情绪&#xff0c;对工作、生活很…

ipv4到ipv6的过渡

v双协议站&#xff1a;过渡时期&#xff0c;站点必须同时支持IPv4和IPv6v隧道技术&#xff1a;IPv6主机之间通信必须使用IPv4的隧道v首部转换&#xff1a;用于发送方使用IPv6&#xff0c;而接收方使用IPv4

关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup...

http://www.cnblogs.com/binye-typing/p/6656595.html 读者可能会奇怪我标题怎么理成这个鬼样子&#xff0c;主要是单单写 lxml 与 bs4 这两个 py 模块名可能并不能一下引起大众的注意&#xff0c;一般讲到网页解析技术&#xff0c;提到的关键词更多的是 BeautifulSoup 和 xpat…

java如何去掉html标签_Java后端去掉HTML标签获取纯文本-Fun言

今天又对我的博客首页进行了一次版本的更新&#xff0c;使其自适应屏幕&#xff0c;获得更好的用户体验&#xff0c;然后就出现点小问题&#xff0c;那就是原来的摘要是人为添加的&#xff0c;有长有短&#xff0c;对自适应屏幕有影响&#xff0c;所以我们现在是截取文章的前20…

单/双中括号与测试条件

测试命令 tesst[]内置命令[[]]bash中的关键字 单中括号 格式[#express1#op#express2#] 注意&#xff1a;   其中#代表括号不能省略   不能匹配模式   变量引用应用双引号括起&#xff0c;尤其当变量引用有空格时   与或非形式-a –o -not   常量应用单/双引号括起  …

暗时间--平凡与优秀间的距离

每个人都希望&#xff0c;在他所从事的领域很优秀&#xff0c;那么如何才能优秀呢&#xff1f;有人做过一个研究&#xff0c;说那些优秀的音乐家&#xff0c;在他们成名之前&#xff0c;已经训练过10000小时。有人可能成功得早&#xff0c;如莫扎特16岁&#xff0c;有些可能需要…

IP分组

IP分组就是根据Ip地址来进行分组&#xff0c;目的可以是为了对不同 的地址组分配不同的带宽&#xff08;限速&#xff09;配置地址组时&#xff0c;其输入格式为A.B.C.D-A.B.C.E&#xff0c;例如&#xff1a;192.168.1.1-192.168.1.250

python3基础3--数据类型--数据运算--表达式if -else-while-for

一、python3 数据类型 1.1 数字例如&#xff1a;1,2,3,4等1.2 int&#xff08;整型&#xff09; 在32位机器上&#xff0c;整数的位数为32位&#xff0c;取值范围为-2**31&#xff5e;2**31-1&#xff0c;即-2147483648&#xff5e;2147483647在64位系统上&#xff0c;整数的位…