給定乙個字串和乙個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。
如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。
如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。
題意:每隔k個反轉k個,末尾不夠k個時全部反轉;
輸入: s =
"abcdefg"
, k =
2輸出:
"bacdfeg"
思路
讀多幾遍題目,就會發現說的其實是,反轉k
個字串行,再隔k
個字串行才能再進行翻轉,字串末尾不夠k
個字元時將剩餘的全部反轉;
演算法遍歷字串s
,下標i
每次遍歷自增2k
,所以先判斷是否越界,如果不越界,則立刻翻轉序列i, i+k-1
,如果是越界的,再判斷末尾是夠有k
個字元可以翻轉,如果還是不夠k
個,那麼直接翻轉後面的全部字串行。
* @thought:常規
* @date: 2/14/2020 11:11 pm
* @execution info:ms 擊敗 % 的j,mb 擊敗 % 的j
* @asymptotic time complexity:o()
*/public string reversestr
(string s,
int k)
else
}return
newstring
(chars);}
//翻轉方法
private
static
char
reverse (
char
arr,
int begin,
int end)
return arr;
}
反轉字串 II
此問題和 反轉字串i 非常類似,但是有以下限制 輸入的字串不包含字首或者字尾空格,然後字串只有以單個空格分隔。要求不開闢任何其他儲存空間,在原先字串上進行替換。eg the sky is blue blue is sky the 解決辦法也是和 i 相似,先總體翻轉一次,然後再翻轉單詞,只是在處理空...
LeetCode 反轉字串II
給定乙個字串和乙個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。示例 輸入 s abcdefg k 2 輸出 bacdfeg 要求 ...
541 反轉字串II
給定乙個字串 s 和乙個整數 k,你需要對從字串開頭算起的每隔 2k 個字元的前 k 個字元進行反轉。如果剩餘字元少於 k 個,則將剩餘字元全部反轉。如果剩餘字元小於 2k 但大於或等於 k 個,則反轉前 k 個字元,其餘字元保持原樣。示例 輸入 s abcdefg k 2 輸出 bacdfeg 遍...