东莞化妆品网站建设,制作图片库,企业注册邮箱的步骤,pc端兼手机端网站模板题目#xff1a;
A是含有n个元素的数组#xff0c;如果可以申请到最大内存#xff0c;那么把A从位置i开始旋转是比较简单的。例如#xff1a;A:a,b,c,d,e.其中i3,旋转后的字符串A为#xff1a;d,e,a,b,c要求设计一个时间复杂度为O(n),空间复杂度为O(1)的算法#xff0c;…题目
A是含有n个元素的数组如果可以申请到最大内存那么把A从位置i开始旋转是比较简单的。例如A:a,b,c,d,e.其中i3,旋转后的字符串A为d,e,a,b,c要求设计一个时间复杂度为O(n),空间复杂度为O(1)的算法实现字符串A从给定位置开始旋转。
思路
步骤一首先将字符串整体旋转步骤二将旋转后的字符串按照旋转中心分为两部分再分别旋转两个部分。 题目
A是含有n个元素的数组如果可以申请到最大内存那么把A从位置i开始旋转是比较简单的。例如A:a,b,c,d,e.其中i3,旋转后的字符串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