经典的三步反转法。
class Solution {
public:
/**
* @param str: An array of char
* @param offset: An integer
* @return: nothing
*/
void rotateString(string &str, int offset) {
//string str1 = str.substr(0, str.size() - offset);
//string str2 = str.substr(str.size() - offset);
if (str.size() == 0) return;
offset = offset % str.size();
reverse(str, str.size() - offset, str.size() - 1);
reverse(str, 0, str.size() - offset - 1);
reverse(str, 0, str.size() - 1);
}
private:
void reverse(string &str, int start, int end) {
while(start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
};
本文介绍了一种经典的字符串操作技巧——三步反转法,用于实现字符串的旋转。通过三次字符串内部元素的反转,可以高效地完成字符串的指定偏移量旋转,避免了额外的空间消耗。
575

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



