제목 : 문자열과 정수 K를 감안할 때, 당신은 반전되는 문자열의 시작 부분에서 각 2K 문자의 첫 번째 k 개의 문자가 필요합니다. 보다 작음 나머지 K 문자 경우 모든 완전히 반전 남아. 이하이지만 더 있으면 2K K 문자보다 같거나 역방향 K 이전 문자 및 문자 그대로 남아.
예 :
입력 : K "ABCDEFG"S = = 2
"bacdfeg"출력
요구 사항 :
문자열은 소문자가 포함되어 있습니다.
범위 [1, 10000]의 문자열 길이 K 감안.
class Solution {
public String reverseStr(String s, int k) {
int len = s.length();
char[] chars = s.toCharArray();
int index = 0;
while (index < len) {
//判断剩余的字符是否够k=2个,不够k 全部翻转, k<len-index<2k 翻转前k
if (len - index > k) {
//局部反转,l指向左,r指向右
for (int l = index, r = index + k - 1; l < r; l++, r--) {
char temp = chars[l];
chars[l] = chars[r];
chars[r] = temp;
}
index = index + 2 * k;
} else {
for (int l = index, r = len - 1; l < r; l++, r--) {
char temp = chars[l];
chars[l] = chars[r];
chars[r] = temp;
}
//置换结束,退出循环
index = len;
}
}
return new String(chars);
}
}