标签:play ref coder 输入 pid start tar bottom color
原创博文,转载请注明出处!
# 题目
# 思路
先局部翻转,后整体翻转。举例:abcdefg先局部翻转为bagfedc,后整体翻转为cdefgab。
# 代码
#include <iostream> #include <string> using namespace std; class Solution { public: string LeftRotateString(string &str, int n) { int len = str.size(); // 特殊输入 if(!str.empty() && n <= len && n >= 0) { int pFirstStart = 0; int pFirstEnd = n - 1; int pSecondStart = n; int pSecondEnd = len - 1; // 翻转字符串的前面n个字符 reverse(str, pFirstStart, pFirstEnd); // 翻转字符串的后面部分 reverse(str, pSecondStart, pSecondEnd); // 翻转整个字符串 reverse(str, pFirstStart, pSecondEnd); } return str; } // 翻转函数 void reverse(string &str, int begin, int end) { while(begin < end) { char tmp = str[begin]; str[begin] = str[end]; str[end] = tmp; begin++; end--; } } }; int main() { // 测试用例 string str = "abcdefg"; int n = 2; // 函数调用 Solution solution; solution.LeftRotateString(str,n); cout<<str<<endl; return 0; }
标签:play ref coder 输入 pid start tar bottom color
原文地址:https://www.cnblogs.com/wanglei5205/p/8984279.html