剑指 Offer 58 - II. 左旋转字符串
算法-目录
剑指 Offer 58 - II. 左旋转字符串
方法一:字符串切片[K]
新建两切片字符串,并将两切片拼接为结果字符串,无冗余操作,效率最高。
class Solution(object):def reverseLeftWords(self, s, n):""":type s: str:type n: int:rtype: str"""return s[n:] + s[:n]
方法二:列表遍历拼接
若面试规定不允许使用 切片函数 ,则使用此方法。
列表(Python) 和 StringBuilder(Java) 都是可变对象,每轮遍历拼接字符时,只是向列表尾部添加一个新的字符元素。最终拼接转化为字符串时,系统 仅申请一次内存 。
class Solution(object):def reverseLeftWords(self, s, n):""":type s: str:type n: int:rtype: str"""res = []for i in range(n, len(s)):res.append(s[i])for i in range(n):res.append(s[i])return ''.join(res)
方法三:字符串遍历拼接
若规定 Python 不能使用 join() 函数,或规定 Java 只能用 String ,则使用此方法。
在 Python 和 Java 中,字符串是 “不可变对象” 。因此,每轮遍历拼接字符时,都需要新建一个字符串;因此,系统 需申请 N 次内存 ,数据量较大时效率低下。
此方法与 方法二 思路一致,区别是使用字符串代替列表。
class Solution(object):def reverseLeftWords(self, s, n):""":type s: str:type n: int:rtype: str"""res = ""for i in range(n, len(s)):res += s[i]for i in range(n):res += s[i]return res
剑指 Offer 58 - II. 左旋转字符串相关推荐
- 【LeetCode】剑指 Offer 58 - II. 左旋转字符串
[LeetCode]剑指 Offer 58 - II. 左旋转字符串 文章目录 [LeetCode]剑指 Offer 58 - II. 左旋转字符串 一.字符串切片 二.列表遍历拼接 三.字符串遍历拼 ...
- 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串
剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...
- 字符串专题-LeetCode:剑指 Offer 58 - II. 左旋转字符串、LeetCode 459.重复的子字符串、 代码思路和注意点
文章目录 一.剑指 Offer 58 - II. 左旋转字符串 二.LeetCode 459.重复的子字符串 一.剑指 Offer 58 - II. 左旋转字符串 思路: 预留出n个字符空间s.res ...
- 字符串(一) | 剑指 Offer 58 - II. 左旋转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词
剑指 Offer 58 - II. 左旋转字符串 把前k个字符移动到结尾 翻转前k个字符,翻转剩余字符 翻转整个字符串 class Solution { public:void reverse(str ...
- LeetCode 03: T58. 最后一个单词的长度(简单); 剑指 Offer 05. 替换空格(简单); 剑指 Offer 58 - II. 左旋转字符串(简单)
文章目录 T7: 58. 最后一个单词的长度(简单) 思路 解法: 双指针 T8: 剑指 Offer 05. 替换空格(简单) 思路 解法: replace T9: 剑指 Offer 58 - II. ...
- 剑指offer系列——剑指 Offer 58 - II. 左旋转字符串(C语言)
⭐️前面的话⭐️ 大家好!博主开辟了一个新的专栏--剑指offer,我要开始刷题了!这个专栏会介绍<剑指offer>书上所有的面试编程题.并且会分享一些我的刷题心得.由于博主水平有限,如有 ...
- Leetcode 剑指 Offer 58 - II. 左旋转字符串 (每日一题 20210830)
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结 ...
- LeetCode221210_135、剑指 Offer 58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结 ...
- Leetcode:剑指 Offer 58 - II. 左旋转字符串(C++)
目录 问题描述: 实现代码: 暴力循环移动法: 原理思路: 翻转法: 原理思路: 问题描述: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能. ...
最新文章
- 我的常用在线工具网站
- Ionic(ionicframework)一款接近原生的Html5移动App开发框架 中文网
- 【知了堂学习笔记】java 编写几种常见排序算法3
- XBMC不能看搜狐电视剧
- 折半查找和二叉排序树的时间性能_详解二叉排序树(基础篇)
- JS判断对象是不是数组“Array”
- HALCON:Variation Model用法解析
- js实现中文转拼音的两种方法
- java文档生成器_最好用的数据库文档生成工具
- 论文笔记:NeuS: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction
- C语言加减乘除运算符
- python镜像安装re模块_Python模块之re模块
- 时空恋旅人 豆瓣影评
- python数据与挖掘实战学习:实战篇 第八章中医证型关联规则挖掘笔记
- 智能手环---设计与实现
- 三十而立的用友,未来的路将向何方?
- socket编程为什么需要htons(), ntohl(), ntohs(),htons() 函数
- linux 版本介绍
- uniapp-swiper轮播图中间放大两边缩小
- 物联网大数据平台TIZA STAR架构解析