本文共 581 字,大约阅读时间需要 1 分钟。
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。
对于这题来说,插入字符和删除字符使其成为回文串,答案是一样的.
首先求s的反串rs,然后对s和rs求最长公共子序列,要删除的字符个数就是LCS.
O(N^2)
#includeusing namespace std;const int MAXN=1010;int dp[MAXN][MAXN];class Solution{public: int solve(string &s) { return s.length()-getLCS(s); } int getLCS(string &s1) { string s2(s1); reverse(s2.begin(),s2.end()); int len=s1.length(); memset(dp,0,sizeof dp); for(int i=0;i >s) { Solution solution; cout< <
转载地址:http://pcwao.baihongyu.com/