2021CVTE嵌入式校招编程题

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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。