Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.
Example:
Input: s = "abcdefg", k = 2 Output: "bacdfeg"
Restrictions:
- The string consists of lower English letters only.
- Length of the given string and k will in the range [1, 10000]
程序如下所示:
class Solution {
public String reverseStr(String s, int k) {
int len = s.length();
char[] ch = s.toCharArray();
if (len < k){
return new StringBuilder(s).reverse().toString();
}
for (int i = 0; i < len; i += 2*k){
int left = i, right = Math.min(i + k-1, len-1);
while (left < right){
char tmp = ch[left];
ch[left] = ch[right];
ch[right] = tmp;
left ++;
right --;
}
}
return new String(ch);
}
}