LeetCode_541 反转字符串 II(Java版)

image

class Solution {
    public String reverseStr(String s, int k) {
        String result = "";//保存新的字符串
        int n =s.length();
        for (int i = 0;i < n;i+=2*k){//2k为单位递增
            if(n-i >= 2*k){//n-i为剩余未检查的字符串长度
                result += (reverse(s.substring(i,i+k)) + s.substring(i+k,i+2*k));//反转前k个,添加k~2k个。
            }else if(n-i < 2 * k && n-i > k){//不足2k,但大于k个时。
                result += reverse(s.substring(i,i+k)) + s.substring(i+k);//继续反转前k个,添加剩余。
            }else if(n-i <= k){//小于k个时
                result += reverse(s.substring(i));//全部反转
            }
        }
        return result;
    }
    //反转
    public String reverse(String s){
        String temp = "";
        for(int i = s.length()-1; i >= 0; i --){
            temp += s.charAt(i);
        }
        return temp;
    }
}

posted on 2021-10-16 17:11  Tianhao丶  阅读(30)  评论(0编辑  收藏  举报

导航