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

来源:互联网 发布:淘宝店设计装修多少钱 编辑:程序博客网 时间:2024/05/17 00:56

蘑菇街笔试题目: 判断一个字符串能否通过添加一个字符变成回文串


相关概念:

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


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


题目可以分为三种情况:

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

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

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


#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;}



0 0
原创粉丝点击