题目链接
思路分析
- 第一种方法,直接新建一个字符串,然后遍历两遍字符串
第二种方法
如图所示,将字符串分为两部分,分别对两部分进行逆置,最后对整体进行逆置,就可以得到结果
代码实现
第一种方法
class Solution {
public:
string reverseLeftWords(string s, int n) {
//第一种方法,直接新建一个字符串,然后遍历两遍字符串
string str;
for(int i = n; i < s.size(); ++i)
str += s[i];
for(int i = 0; i < n; ++i)
str += s[i];
return str;
}
};
第二种方法
class Solution {
public:
void reverse(string& s, int start, int end)
{
while(start < end)
{
swap(s[start++], s[end--]);
}
}
string reverseLeftWords(string s, int n) {
//第二种方法,直接在原字符串上进行操作
reverse(s, 0, n-1);
reverse(s, n, s.size()-1);
reverse(s, 0, s.size()-1);
return s;
}
};