首页 > 其他分享 >LeetCode 516. 最长回文子序列

LeetCode 516. 最长回文子序列

时间:2023-05-07 20:11:25浏览次数:43  
标签:int len 序列 516 1010 LeetCode 回文

class Solution {
public:
    int f[1010][1010];//f[i][j]表示s[i~j]之间的最长序列
    int INF=0x3f3f3f3f;
    int longestPalindromeSubseq(string s) {
        int n=s.size();
        s=' '+s;
        for(int len=1;len<=n;len++)
            for(int i=1;i+len-1<=n;i++)
            {
                int j=i+len-1;
                if(len==1)    f[i][j]=1;
                else
                {
                    f[i][j]=max(f[i+1][j],f[i][j-1]);
                    if(s[i]==s[j])
                        f[i][j]=max(f[i][j],f[i+1][j-1]+2);
                }
                
            }
        return f[1][n];
    }
};

标签:int,len,序列,516,1010,LeetCode,回文
From: https://www.cnblogs.com/tangxibomb/p/17380018.html

相关文章

  • LeetCode 202. 快乐数
    题目链接:LeetCode202.快乐数题意:本题是让我们判断一个数是否是快乐数,题干中给出了快乐数的条件。解题思路:方法一:在题干中指出,如果一个数不是快乐数的话,那么它的各个位上的数字的平方和会无限循环,始终变不到1,也就是说求和的过程中,sum会重复出现,因此我们抓住这一关键特征,判......
  • LeetCode 349. 两个数组的交集
    题目链接:LeetCode349.两个数组的交集题意:本题题意是让我们找出两个数组中的交集,注意交集中不能出现重复元素解题思路:思路比较常规,先遍历数组num1,对于每个首次出现的数字,对应位置上的数值+1,再遍历数组num2,判断当前数字是否在num1中出现,如果出现,就加入到结果集中完整代码如......
  • LeetCode 242. 有效的字母异位词
    题目链接:LeetCode242.有效的字母异位词题意:本题是要判断两个字符串s和t,是否是字母异位词,所谓字母异位次就是如果s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。解题思路:首先我们很容易想到,最简单的思路就是先遍历一遍s字符串,统计出每个字母出现的次数......
  • Leetcode11~20题整理
    11.盛最多水的容器比较暴力的做法:classSolution{public:intmaxArea(vector<int>&h){vector<int>t;intn=h.size();intres=-1;for(inti=0;i<n;i++){for(intj=0;j<(int)t.size(......
  • LeetCode 134.加油站
    1.题目:在一条环路上有n 个加油站,其中第i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以绕环路行驶一周,则返回......
  • 【二分查找】LeetCode 33. 搜索旋转排序数组思路
    题目链接33.搜索旋转排序数组思路思路都在注释里代码classSolution{publicintsearch(int[]nums,inttarget){intlen=nums.length;if(len==0){return-1;}intleft=0,right=len-1;//1.......
  • 【二分查找】LeetCode 528. 按权重随机选择
    题目链接528.按权重随机选择思路代码classSolution{privateint[]sum;publicSolution(int[]w){sum=newint[w.length+1];for(inti=1;i<sum.length;i++){sum[i]=sum[i-1]+w[i-1];}}p......
  • 【二分查找】LeetCode 69. x 的平方根
    题目链接69.x的平方根思路基本思路是在区间\([1,x/2]\)中使用二分查找(因为平方根必然小于\(x/2\)),只不过需要注意一些细节。因为使用的是闭区间查找,所以判断循环终止的条件为\(left\leqright\)。为了防止溢出,使用mid=(right-left)/2+left和mid==x/mi......
  • 【二分查找】LeetCode 540. 有序数组中的单一元素
    题目链接540.有序数组中的单一元素思路假如不存在单个的元素,那么在奇数位置上总是成对元素的第一个元素,偶数位置上总是成对元素的第二个元素,但是如果加入了单个元素呢?我们可以看到在单个元素的左边这个特点没有变化,但是在单个元素的右边,奇数位置上总是成对元素的第二个元素,偶......
  • LeetCode 24. 两两交换链表中的节点
    题目链接:LeetCode24.两两交换链表中的节点本题不涉及算法,直接模拟就可以了,但是模拟的过程中,最好进行画图演示,不然容易出错。想要达到两两交换链表中节点的效果,就需要按照以下三个步骤进行。同时为了将头结点和非头结点统一处理,因此新建一个虚拟头结点,初始时,cur指向虚拟头结......