给定一个字符串 s
和一个整数 k
,从字符串开头算起,每计数至 2k
个字符,就反转这 2k
字符中的前 k
个字符。
- 如果剩余字符少于
k
个,则将剩余字符全部反转。
- 如果剩余字符小于
2k
但大于或等于 k
个,则反转前 k
个字符,其余字符保持原样。
示例 1:
1 2
| 输入:s = "abcdefg", k = 2 输出:"bacdfeg"
|
示例 2:
1 2
| 输入:s = "abcd", k = 2 输出:"bacd"
|
提示:
1 <= s.length <= 104
s
仅由小写英文组成
1 <= k <= 104
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public String reverseStr(String s, int k) { char[] charArray = s.toCharArray(); for(int i = 0; i < charArray.length; i += 2*k){ if(i + k <= charArray.length){ reverse(charArray, i, i + k-1); }else{ reverse(charArray,i, charArray.length-1); } } return new String(charArray); } public void reverse(char[] s, int l, int r){ while(l < r){ char tmep = s[l]; s[l] = s[r]; s[r]= tmep; l++; r--; } } }
|