1. 程式人生 > >動態規劃題解D004 添加回文串

動態規劃題解D004 添加回文串

題目解讀

原題連結: 牛客網 2016校招真題線上程式設計

題目描述

對於一個字串,我們想通過新增字元的方式使得新的字串整體變成迴文串,但是隻能在原串的結尾新增字元,請返回在結尾新增的最短字串。
給定原字串A及它的長度n,請返回新增的字串。保證原串不是迴文串

輸入描述

“ab” 2

輸出描述

a

題意理解

尋找一個最短的字串使之拼接到當前字串的末尾,使得整個字串是一個迴文的字串

演算法分析

這道題需要考慮到這樣一點:即刪除原字串開頭的多少個元素,使得剩下的字串部分為迴文字串,將刪除的元素反轉輸出即得到最終的結果

程式碼

class
Palindrome { public: bool checkPalindrome(string str) { int len = (int)str.length(); for(int i=0;i<len/2;i++){ if(str[i]!=str[len-1-i]){ return false; } } return true; } string addToPalindrome(string A, int n) { stack
<char>
Table; for(int i=0;i<(int)A.length();i++){ Table.push(A[i]); if(checkPalindrome(A.substr(i+1,(int)A.length()))){ break; } } string result ; while(!Table.empty()){ char c = Table.top(); Table.pop(); result = result + c; } return
result; } };