判斷一個字串能否通過新增一個字元變成迴文串
阿新 • • 發佈:2019-02-20
蘑菇街筆試題目: 判斷一個字串能否通過新增一個字元變成迴文串
相關概念:
“迴文串”是一個正讀和反讀都一樣的字串,比如“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; }