题目描述

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

题目地址

https://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec?tpId=13&tqId=11196&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

思路

思路1:利用字符串切片

思路2:多次翻转,先将0~n-1翻转,n~len(s)-1翻转,最后将整个字符串翻转

Python

# -*- coding:utf-8 -*-
class Solution:
def LeftRotateString(self, s, n):
# write code here
if len(s) <= 1:
return s
n = n % len(s) # 处理n>len(s)的情况
# 思路1
# return s[k:] + s[:k]
# 思路2
# return (s[:n][::-1]+s[n:][::-1])[::-1]
# 思路2
s = list(s)
self.reverse(s,0,n-1)
self.reverse(s,n,len(s)-1)
self.reverse(s,0,len(s)-1)
return "".join(s)
def reverse(self, s,start,end):
while start < end:
s[start],s[end] = s[end],s[start]
start += 1
end -= 1 if __name__ == '__main__':
result = Solution().LeftRotateString('abcXYZdef',4)
print(result)

最新文章

  1. SQL语句-创建索引
  2. Oracle 删除重复数据只留一条
  3. Spring BeanUtils 的对象复制 copyProperties
  4. css3动画----实现动态省略号 ...
  5. ajax请求后根据条件进行页面跳转
  6. 关于手机微网站ICP备案
  7. [素材资源] Android开发性能优化简介(非常不错的)
  8. mac使用指南:brew的安装
  9. ubuntu完美卸载JDK
  10. Ember.js demo2
  11. jQuery&amp;HTML&amp;CSS3实现垂直手风琴折叠菜单方法讲解
  12. 关于 unity3d securityexception no valid crossdomain policy available 的错误解决方法
  13. php install
  14. 浅谈Base64编码
  15. wifi驱动总结(1)
  16. 导入csv文件到数据库
  17. IDEA-最简单的struts2项目 关于lib项目的默认位置
  18. compress函数用法详解
  19. 成功解决internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module &#39;express&#39;
  20. Git全面应用

热门文章

  1. topcoder srm 565 div1
  2. vector、map 判断某元素是否存在、查找指定元素
  3. NFS笔记
  4. IDEA的校园邮箱激活方式
  5. Jupyter Notebook插入图片的4种方法
  6. Hive数据导入导出
  7. ng工程升级cli版本
  8. [python]python2与python3版本的区别
  9. [Android - Recovery] 如何刷入第三方recovery
  10. winform中DataGridView实现分页功能