题目:
我的题解:
void reverse(char *s,int start,int end) //定义反转函数
{
while(start<=end)
{
char temp;
temp=s[start];
s[start]=s[end];
s[end]=temp;
start++;
end--;
}
}
char * reverseStr(char * s, int k)
{
int len=strlen(s); //所给字符串长度
int cnt=0; //计数器
int start=0; //记录起始位置
int i=0;
while(s[i])
{
i++;
cnt++;
if(cnt==2*k) //每当计数器为2k时,就倒置前面k个元素
{
reverse(s,start,start+k-1); //倒置前k个元素
cnt=0; //计数器归零
start=start+2*k; //此时起始位置要更新到这次2k结束的位置
}
}
if(cnt<k && cnt>1) //如果最后计数器剩下的还大于0但是小于k
{
reverse(s,start,i-1);
}
else if(cnt>=k && cnt<2*k) //如果最后计数器剩下的在k和2k之间
{
reverse(s,start,start+k-1);
}
return s;
}