Leetcode:剑指 Offer 58 - II. 左旋转字符串(C++)
目录
问题描述:
实现代码:
暴力循环移动法:
原理思路:
翻转法:
原理思路:
问题描述:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例 1:
输入: s = "abcdefg", k = 2 输出: "cdefgab"
示例 2:
输入: s = "lrloseumgh", k = 6 输出: "umghlrlose"
实现代码:
暴力循环移动法:
class Solution {
public:string reverseLeftWords(string s, int n) {int mid=s.size()/2;if(n<mid){for(int i=0;i<n;i++){char temp=s[0]; for(int j=0;j<s.size()-1;j++){s[j]=s[j+1];}s[s.size()-1]=temp;}}else{for(int i=0;i<s.size()-n;i++){char temp=s[s.size()-1]; for(int j=s.size()-1;j>0;j--){s[j]=s[j-1];}s[0]=temp;}}return s;}
};
原理思路:
此方法就是直接循环移动,比如n=2,我们将在字符串整体向前循环移动两次,当然每次移动时,第一个数要放到字符串最后一个位置上。向后移动和向前移动原理一样,if用来判断是向后移动还是向前移动的步骤少,减少运行时间,当然单纯的就向前或向后移动也是可以的。
翻转法:
class Solution {
public:string reverseLeftWords(string s, int n) {reverse(s.begin(),s.begin()+n);reverse(s.begin()+n,s.end());reverse(s.begin(),s.end());return s;}
};
原理思路:
利用线性代数里的转置就可以很好的解释,不理解也没关系,我下面给一个例子,很容易就能看明白。
- 时间复杂度:O(n)
- 空间复杂度:O(1)
Leetcode:剑指 Offer 58 - II. 左旋转字符串(C++)相关推荐
- Leetcode 剑指 Offer 58 - II. 左旋转字符串 (每日一题 20210830)
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结 ...
- Leetcode 剑指 Offer 58 - II. 左旋转字符串 LCOF - Python
class Solution:def reverseLeftWords(self, s: str, n: int) -> str:m = len(s)temp = list(s)temp.ext ...
- 【LeetCode】剑指 Offer 58 - II. 左旋转字符串
[LeetCode]剑指 Offer 58 - II. 左旋转字符串 文章目录 [LeetCode]剑指 Offer 58 - II. 左旋转字符串 一.字符串切片 二.列表遍历拼接 三.字符串遍历拼 ...
- 字符串专题-LeetCode:剑指 Offer 58 - II. 左旋转字符串、LeetCode 459.重复的子字符串、 代码思路和注意点
文章目录 一.剑指 Offer 58 - II. 左旋转字符串 二.LeetCode 459.重复的子字符串 一.剑指 Offer 58 - II. 左旋转字符串 思路: 预留出n个字符空间s.res ...
- LeetCode 03: T58. 最后一个单词的长度(简单); 剑指 Offer 05. 替换空格(简单); 剑指 Offer 58 - II. 左旋转字符串(简单)
文章目录 T7: 58. 最后一个单词的长度(简单) 思路 解法: 双指针 T8: 剑指 Offer 05. 替换空格(简单) 思路 解法: replace T9: 剑指 Offer 58 - II. ...
- 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串
剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...
- 字符串(一) | 剑指 Offer 58 - II. 左旋转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词
剑指 Offer 58 - II. 左旋转字符串 把前k个字符移动到结尾 翻转前k个字符,翻转剩余字符 翻转整个字符串 class Solution { public:void reverse(str ...
- 剑指 Offer 58 - II. 左旋转字符串
算法-目录 剑指 Offer 58 - II. 左旋转字符串 方法一:字符串切片[K] 新建两切片字符串,并将两切片拼接为结果字符串,无冗余操作,效率最高. class Solution(object ...
- 剑指offer系列——剑指 Offer 58 - II. 左旋转字符串(C语言)
⭐️前面的话⭐️ 大家好!博主开辟了一个新的专栏--剑指offer,我要开始刷题了!这个专栏会介绍<剑指offer>书上所有的面试编程题.并且会分享一些我的刷题心得.由于博主水平有限,如有 ...
最新文章
- django 上传文件夹_django文件上传
- 移动端网站优化也不容小觑!
- Java Review - 并发编程_ConcurrentLinkedQueue原理源码剖析
- 提问征集:对话VLC首席开发者Jean-Baptiste Kempf
- 前端学习(1954)vue之电商管理系统电商系统之重置表单数据
- socket编程介绍
- videojs 动态加载视频
- 移动端上下拖动调整顺序效果_HTML5 移动端的上下左右滑动问题
- Directx11教程(54) 简单的基于GS的billboard实现
- Android几种layout(布局)的区别
- linux 编码转换iconv命令
- Sequelize 大于_间接效应值大于1是正常的吗?Q群答疑20200405
- linux 命令 aft,AFT整理出来的NPC检测命令大全
- 百度SEO高端软装设计装修设计公司网站源码
- 安卓前端车牌识别技术应用
- Jstate JVM分析
- 1301 IP地址
- 打造爆款产品需要注意什么
- Leetcode算法——537、复数乘法
- cpu软改vista 驱动_在Vista Service Pack 1中为所有驱动器设置自动碎片整理选项
热门文章
- 标准正态分布函数表的程序实现
- 公司企业微信公众号怎么创建小程序?
- 嵌入式系统测试工具——ETest
- 河南计算机与科学研究生招生,2021年河南理工大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
- matlab播放 视频帧,MATLAB读取视频并按帧保存
- 十大股票资讯网站排名 炒股资讯网站排行榜 炒股必看的资讯网站推荐
- 最全的基于c++的serialport.cpp与serialport.h类文件(解析版)
- xml方式导出word优缺点:
- 每周全球科技十大新闻(2020.11.2-11.8)
- 深度学习车辆检测实现自动驾驶