添加最少字符组成最长回文字串

来源:互联网 发布:什么是淘宝旺旺号 编辑:程序博客网 时间:2024/05/22 04:56
#include<iostream>#include<vector>#include<algorithm>#include<string>using namespace std;string longestPalinString(string s, string p) {    int m = s.size(), n = p.size();    string res(2 * m - n, ' ');//分配内存    int sleft = 0, sright = m - 1;    int pleft = 0, pright = n - 1;    int resleft = 0, resright = res.size() - 1;    while (pleft <= pright) {        int temleft = sleft, temright = sright;        while (s[sleft] != p[pleft])            sleft++;        while (s[sright] != p[pright])            sright--;        for (int i = temleft; i < sleft; i++) {            res[resleft++] = s[i];            res[resright--] = s[i];        }        for (int i = temright; i > sright; i--) {            res[resleft++] = s[i];            res[resright--] = s[i];        }        res[resleft++] = s[sleft++];        res[resright--] = s[sright--];        pleft++; pright--;    }    return res;}int main(){    cout << longestPalinString("AB1C2DE34F3GHJ21KL", "1234321") << endl;}
0 0
原创粉丝点击