字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例 1:
输入: s = “abcdefg”, k = 2
输出: “cdefgab”
示例 2:
输入: s = “lrloseumgh”, k = 6
输出: “umghlrlose”
题意不难理解即将前n个字符放在最后, 形成一个新的字符串.
做法有两个: 一是另外申请空间, 用来存储输出结果字符串, 通过遍历可以使特定顺序的字符存到结果中.最后输出即可; 二是原地对字符串进行几次翻转
方法一:
class Solution {
public:
string reverseLeftWords(string s, int n) {
string res ="";
for(int i = n;i<s.length();i++){
res += s[i];
}
for(int i = 0;i < n;i++){
res += s[i];
}
return res;
}
};
方法二:
class Solution {
public:
string reverseLeftWords(string s, int n) {
reverse(s.begin(), s.begin()+n); // 先是前n个字母反转
reverse(s.begin()+n, s.end()); // 后是后续的字母反转
reverse(s.begin(), s.end()); // 最后是整个字符串反转, 即可得到左旋转字符串的效果
return s;
}
};
希望这些解法对你有所帮助, 如果有疑问或有什么想说的, 欢迎在下方评论区留言。感谢大家的观看~