剑指offer58 - 2刷题打卡

简介: 剑指offer58 - 2刷题打卡
题目描述

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

示例 1:

输入: s = "abcdefg", k = 2
输出: "cdefgab"

示例 2:

输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"

限制:

  • 1 <= k < s.length <= 10000
题解思路

思路一

创建额外空间保存左边的字符串,然后对原字符串左移,再把额外空间保存的字符串替换在后边即可

class Solution {
public:
    string reverseLeftWords(string s, int n) {
        int fast = 0;
        int slow = s.size() - n;
        string temp(s.begin(),s.begin()+n);
        for(int i =0;i<s.size()-n;i++){
            s[i]=s[i+n];
        }
        for(int i =slow ;i<s.size();i++){
            s[i] = temp[fast++]; 
        }
        return s;
    }
};

思路二:

不申请任何空间的前提下解题,思路为首先整体翻转,然后根据k分段翻转

class Solution {
public:
    void reverseWords(string &s,int start,int end){
        int left = start;
        int right = end - 1;
        while(left<right){
            swap(s[left++],s[right--]);
        }
    }
    string reverseLeftWords(string s, int n) {
        //思路 先整体翻转  再局部翻转
        //翻转整个字符串
        reverseWords(s,0,s.size());
        //以n为截断处,分别翻转前后两部分
        //翻转前面的部分
        reverseWords(s,0,s.size()-n);
        //翻转后面的部分
        reverseWords(s,s.size() - n,s.size());
        return s;
    }
};


相关文章
|
域名解析 运维 网络协议
Linux命令行全景指南:从入门到实践,掌握命令行的力量
Linux命令行全景指南:从入门到实践,掌握命令行的力量
330 0
|
SQL Oracle 关系型数据库
助力工业物联网,工业大数据之ODS层构建:代码结构及修改【九】
助力工业物联网,工业大数据之ODS层构建:代码结构及修改【九】
190 0
|
9月前
|
存储 消息中间件 人工智能
《多模态数据信息提取》解决方案测评
先预示一下,本次测评有福利彩蛋哟,快过年了,喜庆的对联需要吧;大冬天的,保暖触屏手套需要吧;走过路过不要错过。
236 10
|
11月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
1713 5
|
NoSQL Java Redis
【Redis】 Java操作客户端命令——列表操作与哈希操作
【Redis】 Java操作客户端命令——列表操作与哈希操作
|
SQL 机器学习/深度学习 人工智能
隐语开源社区【精选问答】第三期
隐语开源社区【精选问答】第三期
556 0
|
Cloud Native Linux 虚拟化
【云原生】Docker跨主机网络Overlay与Macvlan的区别
【云原生】Docker跨主机网络Overlay与Macvlan的区别
358 0
|
Java 数据库连接
警惕内存泄漏与溢出!你的代码是否隐藏着致命危机?
警惕内存泄漏与溢出!你的代码是否隐藏着致命危机?
232 0
|
自然语言处理 算法 测试技术
什么是NLP
介绍什么是NLP以及创建NLP项目,创建模型,训练模型,测试模型训练结果等
什么是NLP
|
运维 监控 Cloud Native
Python运维脚本:提高工作效率
Python运维脚本:提高工作效率
229 0

热门文章

最新文章