题目描述

汇编语言中有一种移位指令叫做循环左移(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)

剑指Offer 43. 左旋转字符串 (字符串)的更多相关文章

  1. [剑指Offer] 43.左旋转字符串

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...

  2. 【剑指Offer】左旋转字符串 解题报告(Python)

    [剑指Offer]左旋转字符串 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目 ...

  3. 【Java】 剑指offer(58-2) 左旋转字符串

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部 ...

  4. Go语言实现:【剑指offer】左旋转字符串

    该题目来源于牛客网<剑指offer>专题. 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左 ...

  5. 《剑指offer》左旋转字符串

    本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:

  6. 剑指offer:左旋转字符串

    题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”ab ...

  7. 剑指offer——67左旋转字符串

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...

  8. 【剑指offer】左旋转字符串

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/27366485 题目描写叙述: 汇编语言中有一种移位指令叫做循环左移(ROL),如今有个简单 ...

  9. 《剑指offer》-左旋转字符串

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S="abc ...

随机推荐

  1. Python+OpenCV图像处理(十四)—— 直线检测

    简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...

  2. Vue基础进阶 之 过渡效果

    进入/离开过渡效果:Vue在插入.更新或移除DOM时,可以设置一些动画效果: 如何使用过渡效果:利用<transition></transition>组件将需要应用的过渡效果的 ...

  3. nginx 中 ulimit 使用修改文件句柄数

    使用ulimit -a 可以查看当前系统的所有限制值, 使用ulimit -n<可以同时打开的文件数>设置用户可以同时打开的 最大文件数 linux系统默认的只要1024 当做负载较大的服 ...

  4. linux --- 8. mysql数据库,redis 数据库

    一. mysql 数据库 1.安装方式 ①yum安装 ②源代码编译安装 ③rpm包安装 yum安装的前提条件,是准备好yum源,可以选择163源,清华源,阿里云源,等等等 .安装mariadb的yum ...

  5. EJB到底是什么?

    EJB到底是什么?   1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业 ...

  6. java 补码实践

    java中的数字都是以补码的形式出现 java中的byte要转为数字也是以补码的形式进行的转换 ================================================= 负数 ...

  7. 正则化,L1,L2

    机器学习中在为了减小loss时可能会带来模型容量增加,即参数增加的情况,这会导致模型在训练集上表现良好,在测试集上效果不好,也就是出现了过拟合现象.为了减小这种现象带来的影响,采用正则化.正则化,在减 ...

  8. windows2012安装

    windows server 2012 r2 安装无法找到install.wim 错误代码0x80070026,以及制作U启动盘决解ISO文件超过5G大小限制的解决方案关于在服务器上安装windows ...

  9. webpack.optimize.UglifyJsPlugin配置说明

    https://segmentfault.com/a/1190000008995453?utm_source=tuicool&utm_medium=referral

  10. springboot应用无故停止运行killed解决方法

    最近使用springboot开发了一个ip代理的程序,今天放到阿里云服务器上运行,多次出现应用运行突然停止的问题. 使用free -h 查看内存使用完全正常.重新运行监视CPU使用也正常.没有出现堆内 ...