字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串 "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% 的用户
c/c++开发分享C++ 剑指 Offer 左旋转字符串【String】简单地址:https://blog.csdn.net/myRealization/article/details/109634640
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/596829.html