剑指offer:左旋转字符串 python
2018-09-13 00:56
10 查看
剑指offer:左旋转字符串 python
题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
方法一:python切片(python最好的一点就是什么都可以用下标访问,也有很多神级操作,比如这个,实现一行,但是感觉只适合笔试,面试这样写是要跪的)
class Solution: def LeftRotateString(self, s, n): return s[n:]+[:n]
方法二:三次翻转实现(面试如果碰到要讲这个~~)
s = ‘abcdefg’ n=2
1.把字符串从[0:n-1]翻转,s = ‘bacdefg’ 是前后交换位置翻转
2.把翻转一次的字符串再次翻转[n:len(s)-1],s = ‘bagfedc’
3.把翻转两次的字符串再次整体翻转[0:len(s)-1], s = ‘cdegfab’ over
class Solution: def reverse(self, s, l, r): while l < r: s[l], s[r] = s[r], s[l] l += 1 r -= 1 def LeftRotateString(self, s, n): if not s: return s s = list(s) #str转成list处理 self.reverse(s, 0, n - 1) self.reverse(s, n, len(s) - 1) self.reverse(s, 0, len(s) - 1) return ''.join(s) #直接join列表就变成str了阅读更多
相关文章推荐
- (剑指offer)左旋转字符串C++
- 《剑指offer》左旋转字符串
- 剑指Offer——翻转单词顺序VS左旋转字符串
- [置顶] 剑指offer:第42题反转单词顺序VS左旋转字符串
- 剑指offer--面试题42: 翻转单词顺序列 vs 左旋转字符串
- 左旋转字符串python实现
- 《剑指Offer》学习笔记--面试题42:翻转单词顺序VS坐旋转字符串
- 剑指Offer面试题:34.翻转单词顺序VS左旋转字符串
- 剑指offer(43)左旋转字符串
- 剑指offer(四十二)之左旋转字符串
- 剑指Offer: 翻转单词顺序列、左旋转字符串
- 《剑指offer》-左旋转字符串
- 《剑指offer》左旋转字符串
- 剑指offer—左旋转字符串
- 剑指offer系列之四十五:左旋转字符串
- 剑指Offer系列-面试题42:翻转单词顺序和左旋转字符串
- 剑指offer-左旋转字符串
- 剑指offer(40)-左旋转字符串
- python 左旋转字符串
- (剑指Offer)面试题42:左旋转字符串