#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;
}
添加最少字符组成最长回文字串
最新推荐文章于 2020-09-01 16:05:34 发布