思路:
和LeetCode151思路类似
①整体翻转
②前k个翻转
③后k个翻转
c
#include<stdio.h>
#include<string.h>
void reverse(char *s,int L,int R)
{
int len=R-L+1;
int j=R;
for(int i=L;i<L+len/2;i++)
{
char tmp=s[i];
s[i]=s[j];
s[j--]=tmp;
}
}
int main()
{
char str[10000];
//1.接收字符串和正整数k
//printf("请输入正整数k\n");
int k;
scanf("%d\n",&k);
//printf("请输入一个字符串:\n");
fgets(str,sizeof(str),stdin);
// 去掉末尾的换行符(如果有)
str[strcspn(str, "\n")] = '\0';
//2.获取字符串长度
int len=strlen(str);
//3.整体翻转
reverse(str,0,len-1);
//4.局部翻转
reverse(str,0,k-1);//前k个
reverse(str,k,len-1);//后k个
//3.输出字符串
printf("%s\n",str);
return 0;
}