剑指offer 66. 左旋转字符串

简介: 剑指offer 66. 左旋转字符串

题目描述

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。


请定义一个函数实现字符串左旋转操作的功能。


比如输入字符串"abcdefg"和数字 22,该函数将返回左旋转 22 位得到的结果"cdefgab"。


注意:


数据保证 nn 小于等于输入字符串的长度。

数据范围

输入字符串长度 [0,1000][0,1000]。

样例

输入:"abcdefg" , n=2
输出:"cdefgab"


方法一:字符串拼接 O(n)

我们可以利用 C++ 自带的函数 substr 对字符串进行拼接,s.substr(int x,int y) 表示从字符串 s 的第 x 个位置起,截取 y 个字符。如果没有 y ,则默认截取 x 以后的所有字符。

class Solution {
public:
    string leftRotateString(string str, int n) {
        string tail = str.substr(0, n);
        string head = str.substr(n);
        return head + tail;
    }
};


方法二:字符串旋转 O(n)

我们也可以直接用翻转操作得到最终答案,拿 abcdefgn = 2 来举例:

第一步: 旋转整个字符串。

第二步: 再分别旋转两个部分,下标区间为 [0,str.size()-n)[str.size()-n,str.size())

class Solution {
public:
    string leftRotateString(string str, int n) {
        reverse(str.begin(), str.end());
        reverse(str.begin(), str.begin() + str.size() - n);
        reverse(str.begin() + str.size() - n, str.end());
        return str;
    }
};


欢迎大家在评论区交流~

目录
相关文章
|
数据可视化 Linux 数据格式
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
`seaborn`是一个基于`matplotlib`的Python数据可视化库,它提供了更高级别的接口来绘制有吸引力的和信息丰富的统计图形。`seaborn`的设计目标是使默认图形具有吸引力,同时允许用户通过调整绘图参数来定制图形。
|
Java 测试技术 Maven
Maven 构建生命周期
Maven生命周期包括clean(clean目标清理输出),default(validate到deploy执行编译、测试、打包、验证、安装和部署),site(site与deploy-site生成发布站点)。每个阶段由插件目标组成,如mvn clean package执行清理和打包。生命周期阶段按顺序执行,目标可在阶段外独立调用。
|
存储 搜索推荐 程序员
97. 一网打尽面试中常被问及的8种数据结构(一)
97. 一网打尽面试中常被问及的8种数据结构(一)
219 0
97. 一网打尽面试中常被问及的8种数据结构(一)
详解虚拟机!京东大佬出品HotSpot VM源码剖析笔记(附完整源码)
有这么一句话:学Java不怕找不到工作,Java的就业前景好,岗位也多,入门还快...但真的是这样吗?为什么明明岗位空缺单位却招不到合适的人?为什么很多学习Java的人却没有单位录用?答案就一个字:卷!公司对于Java开发的要求都变高了,很多东西你不仅要会用,还得知道其中的原理,不然免谈~
|
弹性计算 数据安全/隐私保护
投稿有奖丨阿里云云服务器ECS开发实践征文活动
ECS开发实践征文有奖,最高可得1000元猫超卡!
投稿有奖丨阿里云云服务器ECS开发实践征文活动
|
存储 Java
java学习第二天笔记-java基础概念07-计算机中的数据存储3-学习27
java学习第二天笔记-java基础概念07-计算机中的数据存储3-学习27
76 0
java学习第二天笔记-java基础概念07-计算机中的数据存储3-学习27
习题 9: 打印,打印,打印
# Here's some new strange stuff, remember type it exactly. days = "Mon Tue Wed Thu Fri Sat Sun" months = "Jan\n Feb\n Mar\n Apr\n May\n Jun\n Jul\n ...
1125 0
|
关系型数据库 数据库连接 数据库
在MFC中使用OTL库连接数据库
 http://hyhvi.iteye.com/blog/1549639 在Win32控制台程序下,要使用OTL库,只需在程序加入OTL头文件,并写上以下两句代码即可(ODBC方式):     #define OTL_ODBC      #include "otlv4.
1111 0

热门文章

最新文章