LeetCode541反转字符串②
思路:
关键是判断反转的右边界,
①当剩余字符数<k,是反转当前所有字符,右边界就是right=len-1,不可以超过len-1,会越界;
②当剩余字符数>k且<2k,反转k个字符,右边界就是right=left+k-1,
③当剩余字符数>=2k,也是反转k个字符,右边界是right=left+k-1,
可以看到,②和③的情况,右边界是一样的,也就是说我们只需要判断当前剩余字符数是否够k个就可以了,2k的情况我们不需要额外判断
char* reverseStr(char* s, int k)
{
//
int len=strlen(s);
for(int i=0;i<len;i+=2*k)
{
//翻转
int left=i;
int right=(left+k-1<len)?(left+k-1):(len-1);
while(left<right)
{
char tmp=s[left];
s[left]=s[right];
s[right]=tmp;
left++;
right--;
}
}
return s;
}