剑指offer58.2 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。
请定义一个函数实现字符串左旋转操作的功能。
比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefgab"。
注意:
数据保证n小于等于输入字符串的长度。
样例
输入:"abcdefg" , n=2
输出:"cdefgab"
思路1:
用C++库,很简单可直接看代码
AcWing-78 C++ code:
class Solution {
public:
string leftRotateString(string str, int n) {
if(str.size() == 0 || n == 0){
return str;
}
for(int i = 0; i < n; i++){
char temp = str[0];
str.erase(str.begin());
str += temp;
}
return str;
}
};
思路2:
先反转前面要后移的字符串,再反转后面要前移的字符串,再反转整个的字符串。
AcWing-78 C++ code:
class Solution {
public:
void reverse(string &str, int left, int right){
char temp;
while(right > left){
temp = str[right];
str[right] = str[left];
str[left] = temp;
left++;
right--;
}
}
string leftRotateString(string str, int n) {
if(str.size() == 0 || n < 1){
return str;
}
reverse(str, 0, n - 1);
reverse(str, n, str.size() - 1);
reverse(str, 0, str.size() - 1);
return str;
}
};
本文详细解析了剑指Offer58.2左旋转字符串问题,介绍了两种解决方案:一种是使用C++标准库进行字符串旋转,另一种是通过三次反转字符串来实现旋转。提供了ACWing平台上的C++代码示例,帮助读者理解和实现字符串的左旋转操作。
4930

被折叠的 条评论
为什么被折叠?



