给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
提示:
输入: s = "abcdefg", k = 2
输出: "bacdfeg"
在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。
当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章。
class Solution {
public String reverseStr(String s, int k) {
char[] a = s.toCharArray(); //转换成char数组
for (int start = 0; start < a.length; start += 2 * k) {
int i = start;
int j = Math.min(start + k - 1, a.length - 1); //注意边界
while (i < j) { // 翻转从 i 到 j 的字符块
char tmp = a[i];
a[i++] = a[j];
a[j--] = tmp;
}
}
return new String(a); //返回String
}
}
原文:https://www.cnblogs.com/luedong/p/14603368.html