动态规划题解D004 添加回文串

题目解读

原题链接: 牛客网 2016校招真题在线编程

题目描述

对于一个字符串,我们想通过添加字符的方式使得新的字符串整体变成回文串,但是只能在原串的结尾添加字符,请返回在结尾添加的最短字符串。
给定原字符串A及它的长度n,请返回添加的字符串。保证原串不是回文串

输入描述

“ab” 2

输出描述

a

题意理解

寻找一个最短的字符串使之拼接到当前字符串的末尾,使得整个字符串是一个回文的字符串

算法分析

这道题需要考虑到这样一点:即删除原字符串开头的多少个元素,使得剩下的字符串部分为回文字符串,将删除的元素反转输出即得到最终的结果

代码

class Palindrome {
public:
    bool checkPalindrome(string str)
    {
        int len = (int)str.length();
        for(int i=0;i2;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;
    }
};

你可能感兴趣的:(DP每日一练)