原题题目
代码实现
class Solution {
public:
string leftRotateString(string str, int n) {
reverse(str.begin(),str.end());
reverse(str.begin(),str.begin()+str.size()-n);
reverse(str.begin()+str.size()-n,str.end());
return str;
}
};
解题思路
先把整个字符串翻转,因为字符串分为了两段,定位n段和k-n段,n就是要翻转的字符长度,k-n就整个字符串减去要翻转的字符串的长度。由于题目里只给了n 所以k-n就表示为str.begin()+str.size()-n 即可。随后两段都再翻转一次即可。
解法2:substr
class Solution {
public:
string leftRotateString(string str, int n) {
return str.substr(n)+str.substr(0,n);
}
};