1. 程式人生 > >【劍指offer】左旋轉字符串,C+實現

【劍指offer】左旋轉字符串,C+實現

ews 試用 name DC http ref tst solution otto

原創博文,轉載請註明出處!

本題牛客網地址

本題代碼的github地址

本系列文章的索引地址

# 題目

技術分享圖片

# 思路

先局部翻轉,後整體翻轉。舉例: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+實現