字串 C010 反轉字串II(條件判斷)

2021-10-02 20:21:09 字數 1115 閱讀 4332

給定乙個字串和乙個整數 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 遍...