1. 判断输入字符串是否为回文串 若是则直接输出 若不是则补齐为回文字符串输出
输入120021 则输出120021
输入1200 则输出120021
#include <stdio.h>
#include <string.h>
int main()
{
char arr[512];
scanf("%s",arr);
int head=0;//头位置
int tail=strlen(arr)-1;//尾位置
int HWkid=0;//子回文串标志
int kid_pos_head=0,kid_pos_tail=0;////子回文串头尾位置
for(;head<tail;){//找到最靠内的回文子串
if(arr[head]!=arr[tail]){
HWkid=0;
head++;
continue;//头部尾部不一样 则移动头部 往内靠
}
if(arr[head]==arr[tail]){//相同则记录 第一次相同的位置信息
if(HWkid==0){
HWkid=1;
kid_pos_head=head;
kid_pos_tail=tail;
}
head++;
tail--;
}
}
if(HWkid){//如果存在子回文串 则复制子回文串头部以前的信息
char moreStr[kid_pos_head];
for(int i=0;i<kid_pos_head;i++){
moreStr[i]=arr[kid_pos_head-1-i];
}
strcat(arr,moreStr);
}else{//否则就全部复制一遍
char moreStr[strlen(arr)+1];
memset(moreStr,sizeof(moreStr),0);
int i=0;
for(;i<strlen(arr);i++){
moreStr[i]=arr[strlen(arr)-1-i];
}
moreStr[i]='\0';
strcat(arr,moreStr);
}
printf("%s\n",arr);
return 0;
}