两个方法(均用了string的内置函数,可能达不到面试官想要的)
1.用string的构造函数,参数为两个迭代器,构造出两个string最后返回。注意是前闭后开区间,所以begin()+n和end()都取不到。
2.用substr函数,这里两个重载。第一个两个参数分别是起始位置和复制个数,第二个的参数是从第n位开始复制到结尾。
class Solution {
public:
string LeftRotateString(string str, int n) {
if(str.length() == 0 || n == 0) return str;
//左旋,n位有可能大于字符串长度,所以要取余
n = n % str.length();
//然后挑出前面的n位,将这n位加到后面去,字符串的初始化函数?
//法1:
//string s1(str.begin(),str.begin()+n);
//string s2(str.begin()+n,str.end());
//法2:
string s1 = str.substr(0,n);
string s2 = str.substr(n);
return s2+s1;
}
};