左旋转字符串
class Solution {
public:
string LeftRotateString(string str, int n) {
string res1;
string res=str;
//单独定义一个循环左移一个的函数,后面n是多少,转移多少
int len=str.size();
if(len==0)
return res;
for(int j=0;j<n;j++)
{
//转移一位的做法
int i=0;
res1=res[0];
for(;i<len-1;i++)
{
res[i]=res[i+1];
}
res.resize(len-1);
res=res+res1[0];
}
return res;
}
};总结:
1.string可以像数组一样操作,且,最后加不加\0,最新C++11规定需要有它结尾。
2.截取字符串,用resize()
大神解法:
class Solution {
public:
string LeftRotateString(string str, int n) {
int len = str.length();
if(len == 0) return "";
n = n % len;
str += str;
return str.substr(n, len);
}
};1.很巧妙的解法,以n=n%len,来替代了大量的我的循环运算,可还行
2.str.substr(pos, n) 返回一个字符串,包含str中从下标pos开始的n个字符,牛逼
平安产险科技中心工作强度 24人发布