1. 程式人生 > 其它 >劍指 Offer 58 - II. 左旋轉字串(簡單)

劍指 Offer 58 - II. 左旋轉字串(簡單)

劍指 Offer 58 - II. 左旋轉字串

題目連結:劍指 Offer 58 - II. 左旋轉字串(簡單)

題目描述

字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義一個函式實現字串左旋轉操作的功能。比如,輸入字串"abcdefg"和數字2,該函式將返回左旋轉兩位得到的結果"cdefgab"。

示例 1:

輸入: s = "abcdefg", k = 2
輸出: "cdefgab"

示例 2:

輸入: s = "lrloseumgh", k = 6
輸出: "umghlrlose"

限制:

  • 1 <= k < s.length <= 10000

題解

思路:這道題採用“區域性翻轉+整體翻轉”即可

程式碼(C++)

string reverseLeftWords(string s, int n) {
    //區域性反轉+整體反轉
    for (int i = 0, j = n - 1; i < j; i++, j--) {
        char temp = s[i];
        s[i] = s[j];
        s[j] = temp;
    }
    for (int i = n, j = s.size() - 1; i < j; i++, j--) {
        char temp = s[i];
        s[i] = s[j];
        s[j] 
= temp; } for (int i = 0, j = s.size() - 1; i < j; i++, j--) { char temp = s[i]; s[i] = s[j]; s[j] = temp; } return s; }

分析

  • 時間複雜度:O(N)

  • 空間複雜度:O(1)

參考連結

官方解答

程式碼隨想錄