51nod 1088 最長迴文子串
阿新 • • 發佈:2018-12-20
解題思路:用暴力的方式,定義兩個標記i,j,i從字串的左邊開始往右指,j從字串的右邊開始往左指。取中間的字串儲存到另一個字元陣列中,每儲存完一個字串,則進行迴文字串的判斷。
迴文字串的判斷如下:
從字串的開頭遍歷到字串的一半,判斷前半部分和後半部分的字元是否相同,若相同,則為迴文字串。
將每個迴文字串的長度記錄下來。最後得到最大回文字串的長度。
原始碼附上:
#include <iostream> #include <cstring> using namespace std; int judge(char str2[]) { int i; int len=strlen(str2); for(i=0;i<len/2;i++) { if(str2[i]!=str2[len-i-1]) { return -1; } } return 0; } int main() { char str1[1001]; memset(str1,0,sizeof(str1)); cin>>str1; int length=strlen(str1); int i,j,k,num,max=0,temp; for(i=0;i<length;i++) { for(j=length-1;j>i;j--) { num=0; char str2[1001]; memset(str2,0,sizeof(str2)); for(k=i;k<=j;k++) { str2[num++]=str1[k]; } if(judge(str2)==0) { temp=strlen(str2); if(temp>max) { max=temp; } } } } cout<<max<<endl; return 0; }