#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 1007;
int dp[2][maxn];
int main()
{
string s;
cin >> s;
int len = s.length();
string s1="";
for(int i=len-1;i>=0;i--)
{
s1 += s[i];
}
for (int i = 1; i <= len; i++)
{
for (int j = 1; j <= len; j++)
{
if (s1[j-1] == s[i-1])
{
dp[i%2][j] = dp[(i - 1)%2][j - 1] + 1;
}
else
{
dp[i % 2][j] = max(dp[(i - 1) % 2][j], dp[i%2][j - 1]);
}
}
}
cout << len - dp[(len) % 2][len] << endl;
return 0;
}
通过最长公共子串求得使得一个串变为回文串的最少添加字符
最新推荐文章于 2023-03-22 21:21:16 发布