回文串

来源:互联网 发布:微信 for mac 2.2 dmg 编辑:程序博客网 时间:2024/06/06 20:12

题目描述

给定一个字符串,问是否能够通过添加一个字母将其变成“回文串”。 “回文串”是指正着和反着读都一样的字符串。如:”aa”,”bob”,”testset”是回文串,”alice”,”time”都不是回文串。

输入
一行一个有小写字母构成的字符串,字符串长度不超过10。

样例输入
coco

输出
如果输入字符串可以通过添加一个字符,则输出”YES”,否则输出”NO”。

样例输出
YES

代码:

#include<iostream>#include<cstring>using namespace std;int main(){    char a[10];    cin>>a;    int count=0,flag=0;int s1,s2;    for(int i=0,j=strlen(a)-1;i<strlen(a)/2 && j>strlen(a)/2;)    {        if(a[i]==a[j])//如果相等,相安无事        {            i++,j--;            continue;        }        else //如果不相等,有两种加法,一个是在前半段字符串加,一个是在后半段字符串加        {//所谓的加法就是可以忽略一个字符,继续比对后面的字符即可            if(flag==1)                break;            if(count!=1)            {                s1=i;//记录下来出事的位置                s2=j;                count++;                i++;                continue;               }else             {                i=s1;//说明在前半段字符串加不行,i和j回溯到出事的位置                j=s2;                count = 0;//重置count                j--;                flag=1;//两种都尝试了            }        }    }    if(flag==1)        cout<<"No"<<endl;    else        cout<<"Yes"<<endl;    return 0;       }
原创粉丝点击