添加回文串(动态规划)

来源:互联网 发布:生产线显示屏 网络 编辑:程序博客网 时间:2024/06/05 12:02

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

思路:写一个判断是否为回文串的方法,再写一个编写回文串的方法….

class Palindrome {    bool judce(string str){        int low=0,high=str.size()-1;        while(low<high){  //这里就不解释了,判断str是否回文串            if(str[low]!=str[high])                return false;            ++low;            --high;        }        return true;    }public:    string addToPalindrome(string str, int n) {        reverse(str.begin(),str.end());//原地翻转str字符串        string s;        while(!str.empty()){            s.push_back(str.back());//向s中压入str的最后一个字符            str.pop_back();//str弹出最后一个字符            if(judce(str))//如果这时候的str是回文串,说明原str包含回文数,那就返回原str除了此时str的内容,即s,结束。                break;        }        reverse(s.begin(),s.end());        return s;    }};