
Reverse String II
给定字符串和一个整数k
每2k个长度,reverse 前 k 个字符,然后后k 个保持不变
如果最后剩下了 小于 k 个长度,那么就全部 reverse
Solution
这一种思路就是直接拿 stringbuilder append
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
public class { public String reverseStr(String s, int k) { int len = s.length(); int times = len / (2*k); StringBuilder sb = new StringBuilder(); int j = 1; while(j <= times) { int index = k + (j-1) * 2 * k - 1; int i = k; while(i > 0) { sb.append(s.charAt(index)); i--; index--; } i = k; index = k + (j-1) * 2 * k; while(i > 0) { sb.append(s.charAt(index)); i--; index++; } j++; } int index = Math.min(times * 2 * k + k - 1, s.length() - 1); while(index >= (times * 2 * k ) ) { sb.append(s.charAt(index)); index--; } index = Math.min(times * 2 * k + k, s.length()); while(index < s.length()){ sb.append(s.charAt(index)); index++; } return sb.toString(); } }
|
近期评论