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_541
最新推荐文章于 2022-06-23 15:12:26 发布