您的位置:首页 > 其它

判断一个字符串能否通过添加一个字符变成回文串

2015-09-21 16:57 435 查看
蘑菇街笔试题目: 判断一个字符串能否通过添加一个字符变成回文串

相关概念:

“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。

回文可分为两种:偶数回文和奇数回文,偶数回文中间两个字符相同,奇数回文中间只有一个字符;

题目可以分为三种情况:

(1)原字符串即为回文串,直接在中间添加和中间字符相同的字符即可;

(2)缺少一个字符,找出缺少位置;

(2)缺少多个字符,无法[b]通过添加一个字符改造为回文字符;[/b]

#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;

int main()
{
char str[30];
gets(str);
int len=strlen(str);
int i=0,j=len-1;
int countdif=0;

while(i<j)
{
if(str[i]==str[j])		//首尾相向比较
{
i++;
j--;
}
else
{
if(str[i+1]==str[j]||str[i]==str[j-1])	//判断是否为缺失位
{
str[i+1]==str[j] ? i++:	j-- ;
countdif++;
}
else
{
countdif=2;
break;
}

}
}

switch(countdif)
{
case 0:
cout<<"本来就是回文字串"<<endl;break;
case 1:
cout<<"可以改造为回文子串"<<endl;break;
default:
cout<<"不可以改造为回文子串"<<endl;break;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: