美文网首页
剑指offer 66- 左旋转字符串

剑指offer 66- 左旋转字符串

作者: 顾子豪 | 来源:发表于2021-06-07 13:09 被阅读0次

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

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

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

    注意:

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

    样例

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

    分析:
    算法一:
    时间复杂度:O(N)
    空间复杂度:O(N)

    class Solution {
    public:
        string leftRotateString(string str, int n) {
            string s1, s2;
            for(int i = 0; i<n; i++) s1+=str[i];
            for(int j = n; j<str.size(); j++) s2+=str[j];
            return s2+s1;
        }
    };
    

    算法二:
    1.将整个字符串翻转
    2.将前n个字符串翻转
    3.将n后面的字符串翻转
    最后即为答案
    时间复杂度:O(N)
    空间复杂度:O(1)

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

    相关文章

      网友评论

          本文标题:剑指offer 66- 左旋转字符串

          本文链接:https://www.haomeiwen.com/subject/dkmzjltx.html