给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
该题不难,关键就是
其实在遍历字符串的过程中,只要让 i += (2 * k)
,i 每次移动 2 * k
就可以了,然后判断是否需要有反转的区间
所以当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章
class Solution { public String reverseStr(String s, int k) { char[] arr = s.toCharArray(); int left, right, len = s.length(); char temp; // 每2k个元素为一组进行反转 for (int i = 0; i < len; i += 2 * k) { left = i; //判断下标是否越界,也就是剩余的元素是否还有k个 right = i + k < len ? i + k - 1 : len - 1; while (left <= right) { temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; left++; right--; } } return String.valueOf(arr); } }
所以当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章
字符数组转字符串:
String str = ch.toString();