左旋转字符串【剑指Offer, 语法题】

左旋转字符串

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

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

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

注意:

数据保证 n 小于等于输入字符串的长度。
数据范围
输入字符串长度 [0,1000]。

样例
输入:"abcdefg" , n=2

输出:"cdefgab"

substr 指定长度复制

形式

s.substr(pos, len)

返回值

string,包含s中从pos开始的len个字符的拷贝
(pos的默认值是0,len的默认值是s.size() - pos,即不加参数会默认拷贝整个s)

异常

若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;
若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾

点击查看代码
class Solution {
public:
    string leftRotateString(string str, int n) {

        return str.substr(n)+str.substr(0,n);
    }
};

迭代器

string 有个构造函数:传入起点和结束点迭代器,可以构造出迭代器之间的字符串(左闭右开)。
分别构造出 s1 为 s[n] ~ 末尾。s2 为 s[0] ~ s[n-1]
返回 s1 + s2 即可.

点击查看代码
class Solution {
public:
    string leftRotateString(string str, int n) {
        string s1(str.begin() + n, str.end());
        string s2 (str.begin(), str.begin() + n);
        return s1 + s2;
    }
};
posted @ 2023-03-05 23:45  Keith-  阅读(13)  评论(0编辑  收藏  举报