栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

左旋转字符串(C++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

左旋转字符串(C++)

左旋转字符串 描述

  汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc”

数据范围:输入的字符串长度满足0≤len≤100,0≤n≤100

进阶:空间复杂度 O(n) ,时间复杂度 O(n)

示例1
输入:
"abcXYZdef",3
返回值:
"XYZdefabc"
示例2
输入:
"aab",10
返回值:
"aba"
思路/解法

先判断n和str.length()的长度,如果str.length() < n,此时应该用n减去str.length()的长度,直至str.length() > n,避免不必要的循环次数。接下来,直接暴力穷举即可。

class Solution {
public:
    string LeftRotateString(string str, int n) {
        if(str == "")return str;
        //方式一
        while(str.length() < n)
            n -= str.length();
        //方式二
        
        //思路一
        for(int i = 0;i < n;i++)
        {
            str.push_back(str[0]);
            str.erase(str.begin());
        }
        //思路二
        
        return str;
    }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982125.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号