leetcode:541反轉字串
阿新 • • 發佈:2018-11-11
給定一個字串和一個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。示例:輸入: s = “abcdefg”, k = 2
輸出: “bacdfeg”
要求:該字串只包含小寫的英文字母。給定字串的長度和 k 在[1, 10000]範圍內。
class Solution { public: string reverseStr(string s, int k) { if(k==1) { return s; } int size=s.size(); int begin=0; int end=begin+k-1; int tmp=size/(2*k);//l while(tmp--) { int flag=end; while(begin<end) { swap(s[begin],s[end]); begin++; end--; } begin=flag+k+1; end=begin+k-1; } int flag=size-begin; if(flag>k&&flag<(2*k)) { while(begin<end) { swap(s[begin],s[end]); begin++; end--; } } if(flag<=k) { end=size-1; while(begin<end) { swap(s[begin],s[end]); begin++; end--; } } return s; } };