[LeetCode] Longest Palindromic Subsequence 最长回文子序列
来源:互联网 发布:知学学院宋剑勇 编辑:程序博客网 时间:2024/06/10 05:46
声明:原题目转载自LeetCode,解答部分为原创
Problem :
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000.
Example 1:
Input:
"bbbab"Output:
4One possible longest palindromic subsequence is "bbbb".
Example 2:
Input:
"cbbd"Output:
2One possible longest palindromic subsequence is "bb".
Solution:
思路:动态规划问题,假定f(left, right)为字符数组string[ left, right ]中存在的回文子序列的最大值。其状态转换方程为:
if left > right, then f( left, right ) = 0,
else if left = right, then f( left, rigth ) = 1
else if s[ left ] = s[ right ], then f( left, right ) = f( left + 1, right - 1 ) + 2,
else, f( left, right ) = max( f( left + 1, right ), f( left, right - 1) )
代码如下:
#include<iostream>#include<vector>using namespace std;class Solution {public: int longestPalindromeSubseq(string s) { vector<vector<int> > length(s.size(), vector<int>(s.size())); for(int i = s.size() - 1 ; i >= 0; i --) { length[i][i] = 1; for(int k = 0 ; k < i ; k ++){length[i][k] = 0;} for(int j = i + 1; j < s.size(); j ++) { if(s[i] == s[j]) length[i][j] = length[i + 1][j - 1] + 2; else length[i][j] = max(length[i + 1][j], length[i][j - 1]);}}return length[0][s.size() - 1]; } /* int length(string s, int i, int j) { if(i == j) return 1; else if(i > j) return 0; else if(s[i] == s[j]) return length(s, i + 1, j - 1) + 2; else return max(length(s, i + 1, j), length(s, i, j - 1));}*/};int main(){Solution text;cout << text.longestPalindromeSubseq("aabcda") << endl; return 0;}
阅读全文
0 0
- [LeetCode] Longest Palindromic Subsequence 最长回文子序列
- LeetCode 516. Longest Palindromic Subsequence--最长回文子序列长度
- 最长子序列回文问题,Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence(最长回文子序列)
- 【LeetCode】516. Longest Palindromic Subsequence最长回文子序列(非连续)
- [leetCode-516Longest Palindromic Subsequence]最长回文子序列DP算法详解
- leetcode 516. Longest Palindromic Subsequence 最长回文子序列 + DP动态规划
- leetcode 516. Longest Palindromic Subsequence 最大回文子序列
- Leetcode--Longest Palindromic Substring(最长回文子序列)
- 最长回文子序列 Longest Palindromic Substring
- UVA - 11404 Palindromic Subsequence (最长回文子序列)
- UVa 11404 - Palindromic Subsequence (最长回文子序列 DP)
- 算法导论15.2 最长回文子序列 Longest palindrome subsequence
- [LeetCode] Longest Palindromic Substring 最长回文子串
- LeetCode Longest Palindromic Substring(最长回文子串)
- [LeetCode]—Longest Palindromic Substring 最长回文子串
- LeetCode | Longest Palindromic Substring(最长回文子串)
- Longest Palindromic Substring [LeetCode] 最长回文子串
- linux线程3-互斥与同步
- centOS6.8安装vsftp出现ftp:connect:Connection refused原因
- Struts2框架搭建及常见配置问题
- 业界应用,技术分享 record_1
- 关于requests项目
- [LeetCode] Longest Palindromic Subsequence 最长回文子序列
- Unity官方练习——Roll-a-ball tutorial
- 114. Flatten Binary Tree to Linked List
- HTML4结构
- POJ 1569 Myacm Triangles 笔记
- linux下vsftp安装完无法显示文件原因
- 淘淘商城系列——解决KindEditor上传图片浏览器兼容性问题
- POJ 1579 Function Run Fun 笔记
- HTML4 排版标记