leetcode_541

package leetcode.string;

/**
 * Created by w84108989 on 2019/4/2.
 */
//给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。
//
//        示例:
//
//        输入: s = "abcdefg", k = 2
//        输出: "bacdfeg"
//        要求:
//
//        该字符串只包含小写的英文字母。
//        给定字符串的长度和 k 在[1, 10000]范围内。
public class reverse_541 {
    public static void main(String[] args) {
        System.out.println(reverseStr("abc",4));
    }
    public static String reverseStr(String s, int k) {
        String res = "";
        for (int i = 0; i < (s.length()/(2*k)); i+=1) {
            int m = 2 * k * i;
            String tmp = "";
            tmp = new StringBuffer(s.substring(m,m+k)).reverse().toString() + s.substring(m+k,m+2*k);
            res += tmp;
        }
        String s1 = s.substring(res.length());
        res += a(s1,k);
        return res;
    }
    public static String a(String s,int k){
        if (s.length() < 2*k){
            int i = Math.min(k,s.length());
            String tmp = new StringBuffer(s.substring(0,i)).reverse().toString() + s.substring(i);
            return tmp;
        }
        return null;
    }
}

你可能感兴趣的:(leetcode)