[541] LeetCode 역방향 텍스트 II

제목 : 문자열과 정수 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);
    }
}
게시 55 개 원래 기사 · 원 찬양 14 ·은 20000 +를 볼

추천

출처blog.csdn.net/qq422243639/article/details/103747567