大致過程為:先預處理,將非字母字元去掉,並將所有大寫字母轉為小寫字母;然後從第二個字元開始作為中間元素查詢最長的回文,並記錄最長的長度和位置;
難點是:輸出為原輸入字串的子串,這裡用的方法和作者的一樣,用陣列p記錄預處理後的每個字元在原字串的位置。
**如下:
//2023年6月24日23:16:08
#include #include #include using namespace std;
int p[5000+10];
int main()
else if(inputstr[it]>='a' && inputstr[it]<='z')
}for(string::size_type it=1 ; it<=midstr.size() ; it++)
}//aba
i = 1;
if(midstr[mid-1]==midstr[mid+1])}}
// cout << st << " " << en << endl;
for(string::size_type it=p[st] ; it<=p[en] ; it++)
cout << endl;
return 0;
}
演算法競賽入門經典 例題 3 4 回文串
輸入乙個字串。求出當中最長的回文子串。子串的含義是 在原串中連續出現的字串片段。回文的含義是 正著看和倒著看同樣。如abba和yyxyy。在推斷時,應該忽略全部標點符號和空格。且忽略大寫和小寫。但輸出應保持原樣 在回文串的首部和尾部不要輸出多餘字元 輸入字串長度不超過5000,且占領單獨的一行。應該...
34 回文子串
總時間限制 1000ms 記憶體限制 65536kb 描述 給定乙個字串,輸出所有長度至少為2的回文子串。回文子串即從左往右輸出和從右往左輸出結果是一樣的字串,比如 abba,cccdeedccc都是回文字串。輸入乙個字串,由字母或數字組成。長度500以內。輸出輸出所有的回文子串,每個子串一行。子串...
34 回文子串
34 回文子串 檢視 提交 統計 提問 總時間限制 1000ms 記憶體限制 65536kb 描述給定乙個字串,輸出所有長度至少為2的回文子串。回文子串即從左往右輸出和從右往左輸出結果是一樣的字串,比如 abba,cccdeedccc都是回文字串。輸入乙個字串,由字母或數字組成。長度500以內。輸出...