代码随想录字符串——反转字符串II

题目

给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。

如果剩余字符少于 k 个,则将剩余字符全部反转。

如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例:

输入: s = “abcdefg”, k = 2 输出: “bacdfeg”

思路

正常模拟即可

java代码

class Solution{
	public String reverseStr(String s,int k){
		char[] ch = s.toCharArray();
		for(int  i = 0; i < ch.length;i += 2 * k){//i每次走2k个步长
			if(i + k <= ch.length){//反转前2k个中的前k个字符
				reverse(ch, i, i+k-1);
				continue;
			}
			reverse(ch,i,ch.length-1);//i+k超出最大长度的话,最后的不足k个单独处理,全部反转
		}
	}
	public void reverse(char[] ch,int i,int j){
		for( ; i < j; i++,j--){
			char temp = ch[i];
			ch[i] = ch[j];
			ch[j] = temp;
		}
	}
}

你可能感兴趣的:(算法,数据结构,java)