剑指offer:左旋转字符串
定义了个返回值为字符串型的LeftRotateString,有两个参数str和n,先检查字符串的长度是否小于等于1,是的话返回字符串本身,当然会出现n的值比字符串还要长,所以要取余,后构造了一个函数将字符转换成字符向量,然后遍历小于n的位数的值,全加入到temp的后面,将这个得到的字符串赋值给原字符串,return std::move(str);这句话是用右值引用的方式返回,因为过长的字符串在传递的过程中会出现问题!!!
class Solution {
public:
string LeftRotateString(string str, int n) {
int len = str.size();
if(len<=1) return str;
n=n%len;
vector<char> temp(str.begin(),str.end());
for(int i =0;i<n;++i){
temp.push_back(str[i]);
}
str.assign(n+temp.begin(),temp.end());
return std::move(str);
}
};
这个前部分差不多,就是把字符串复制,用substr函数,重新取字符串,(n,len),n为指定的开始位置,len为字符串的长度!!!
class Solution{
public:
string LeftRotateString(string str,int n){
int len=str.size();
if(len==0) return str;
if(n>=len) n=n%len;
str+=str;
return str.substr(n,len);
}
};
#剑指offer##23届找工作求助阵地#