欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++ 剑指 Offer 左旋转字符串【String】简单

程序员文章站 2022-03-19 16:05:41
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串 "abcdefg" 和数字 2 ,该函数将返回左旋转两位得到的结果 "cdefgab" 。示例 1:输入: s = "abcdefg", k = 2输出: "cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出: "umghlrlose"限制: 1 <= k < s.length <= 10000解法1 辅助空间...

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

示例 1:

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

示例 2:

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

限制: 1 <= k < s.length <= 10000


解法1 辅助空间

class Solution {
public:
    string reverseLeftWords(string s, int n) {
        return s.substr(n) + s.substr(0, n);
    }
};

时间效率还行:

执行用时:4 ms, 在所有 C++ 提交中击败了91.32% 的用户
内存消耗:8.2 MB, 在所有 C++ 提交中击败了5.00% 的用户

解法2 原地翻转

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;
    }
};

执行效率如下:

执行用时:4 ms, 在所有 C++ 提交中击败了91.32% 的用户
内存消耗:7.5 MB, 在所有 C++ 提交中击败了64.40% 的用户

本文地址:https://blog.csdn.net/myRealization/article/details/109634640

相关标签: LeetCode 字符串