動態規劃題解D004 添加回文串
阿新 • • 發佈:2018-11-08
題目解讀
原題連結: 牛客網 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;
}
};