【leetcode】541. 反转字符串 II

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

解答:

class Solution {
    public String reverseStr(String s, int k) {
        StringBuffer r = new StringBuffer();
        int len = s.length();
        for(int i = 0; i < len; i = i+2*k){
            int left = len - i;
            StringBuffer t = new StringBuffer();
            if(left < k){ //如果剩余字符少于 k 个,则将剩余字符全部反转。
                t.append(s.substring(i, len));
                r.append(t.reverse());
            }else if( (left<2*k) && (left>=k) ){ //如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。     
                t.append(s.substring(i, i+k));
                r.append(t.reverse());
                r.append(s.substring(i+k, len));
            }else if(i%(2*k) == 0){
                t.append(s.substring(i, i+k));
                r.append(t.reverse());
                r.append(s.substring(i+k, i+2*k));
            }
        }
        return r.toString();
    }
}

你可能感兴趣的:(leetcode,leetcode,java,算法)