LeetCode 541. Reverse String II
阿新 • • 發佈:2022-05-19
LeetCode 541. Reverse String II (反轉字串 II)
題目
連結
https://leetcode.cn/problems/reverse-string-ii/
問題描述
給定一個字串 s 和一個整數 k,從字串開頭算起,每計數至 2k 個字元,就反轉這 2k 字元中的前 k 個字元。
如果剩餘字元少於 k 個,則將剩餘字元全部反轉。
如果剩餘字元小於 2k 但大於或等於 k 個,則反轉前 k 個字元,其餘字元保持原樣。
示例
輸入:s = "abcdefg", k = 2
輸出:"bacdfeg"
提示
1 <= s.length <= 104
s 僅由小寫英文組成
1 <= k <= 104
思路
普通的翻轉字串的題目,只需要多加一些條件即可。
複雜度分析
時間複雜度 O(n)
空間複雜度 O(n)
程式碼
Java
public String reverseStr(String s, int k) { char[] c = s.toCharArray(); for (int i = 0; i * k < s.length(); i = i + 2) { int left = i * k, right = Math.min(left + k - 1, s.length() - 1); while (left < right) { char temp = c[left]; c[left++] = c[right]; c[right--] = temp; } } return new String(c); }