力扣:劍指 Offer 58 - II. 左旋轉字符串
劍指 Offer 58 - II. 左旋轉字符串
難度簡單383
字符串的左旋轉操作是把字符串前面的若干個字符轉移到字符串的尾部。請定義一個函數(shù)實現(xiàn)字符串左旋轉操作的功能。比如,輸入字符串"abcdefg"和數(shù)字2,該函數(shù)將返回左旋轉兩位得到的結果"cdefgab"。
?
示例 1:
輸入: s = "abcdefg", k = 2輸出:?"cdefgab"
示例 2:
輸入: s = "lrloseumgh", k = 6輸出:?"umghlrlose"
?
限制:
1 <= k < s.length <= 10000
通過次數(shù)455,690提交次數(shù)530,334
思路:
字符串反轉,時間復雜度O(n),空間復雜度O(1)
先將整個字符串完全反轉,然后再將前半部分和后半部分反轉
class?Solution?{
public:
????void?reverse(string&?s,int?start,int?end){
????????for(int?i=start,j=end;i<j;i++,j--){
????????????swap(s[i],s[j]);
????????}
????}
????string?reverseLeftWords(string?s,?int?n)?{
????????reverse(s,0,s.size()-1);
????????reverse(s,0,s.size()-n-1);
????????reverse(s,s.size()-n,s.size()-1);
????????return?s;
????}
};
標簽: