劍指 Offer 58 - II. 左旋轉字串(簡單)
阿新 • • 發佈:2021-11-08
題目連結:
題目描述
字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義一個函式實現字串左旋轉操作的功能。比如,輸入字串"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)
參考連結