剑指offer左旋转字符串,C+实现
Posted wanglei5205
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer左旋转字符串,C+实现相关的知识,希望对你有一定的参考价值。
原创博文,转载请注明出处!
# 题目
# 思路
先局部翻转,后整体翻转。举例: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; }
以上是关于剑指offer左旋转字符串,C+实现的主要内容,如果未能解决你的问题,请参考以下文章