首页 > 编程语言 >算法学习day57动态规划part17-516、647

算法学习day57动态规划part17-516、647

时间:2023-06-14 23:55:06浏览次数:43  
标签:int part17 len 序列 647 字符串 回文 dp 516

package LeetCode.DPpart17;
/**
 * 516. 最长回文子序列
 * 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。
 * 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。
 * */
public class LongestPalindromicSubsequence_516 {
    public int longestPalindromeSubseq(String s) {
        int len = s.length();
        int[][] dp = new int[len + 1][len + 1];
        for (int i = len - 1; i >= 0; i--) { // 从后往前遍历 保证情况不漏
            dp[i][i] = 1; // 初始化
            for (int j = i + 1; j < len; j++) {
                if (s.charAt(i) == s.charAt(j)) {
                    dp[i][j] = dp[i + 1][j - 1] + 2;
                } else {
                    dp[i][j] = Math.max(dp[i + 1][j], Math.max(dp[i][j], dp[i][j - 1]));
                }
            }
        }
        return dp[0][len - 1];
    }
}
package LeetCode.DPpart17;
/**
 * 647. 回文子串
 * 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。
 * 回文字符串 是正着读和倒过来读一样的字符串。
 * 子字符串 是字符串中的由连续字符组成的一个序列。
 * 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。
 * */
public class PalindromicSubstrings_647 {
    public int countSubstrings(String s) {
        char[] chars = s.toCharArray();
        int len = chars.length;
        boolean[][] dp = new boolean[len][len];
        int result = 0;
        for (int i = len - 1; i >= 0; i--) {
            for (int j = i; j < len; j++) {
                if (chars[i] == chars[j]) {
                    if (j - i <= 1) { // 情况一 和 情况二
                        result++;
                        dp[i][j] = true;
                    } else if (dp[i + 1][j - 1]) { //情况三
                        result++;
                        dp[i][j] = true;
                    }
                }
            }
        }
        return result;
    }
}

 

标签:int,part17,len,序列,647,字符串,回文,dp,516
From: https://www.cnblogs.com/lipinbigdata/p/17481676.html

相关文章

  • Xcode 15 beta (15A5160n) - Apple 平台 IDE
    Xcode15beta(15A5160n)-Apple平台IDEIDEforiOS/iPadOS/macOS/watchOS/tvOS/visonOS请访问原文链接:https://sysin.org/blog/apple-xcode-14/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgXcode15使您能够为所有Apple平台开发、测试和分发应用程序。......
  • 男子在网吧蜗居4年半 曾647分考上大学 IS2120@BG57IV3
    男子在网吧蜗居4年半曾647分考上大学//z2013-03-2623:20:33.T1669380836.K[T2,L62,R2,V17]网吧的这个角落就是77号座位,也是靳爱兵这4年半的家本报记者季啸山摄生活、他的一切3月25日15时30分,吉大前卫校区北门的“学苑”网络,光线灰暗。77号座位,宽大的座位里蜷缩着一个头发长长......
  • 516. 最长回文子序列
    给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。示例1:输入:s="bbbab"输出:4解释:一个可能的最长回文子序列为"bbbb"。>动态规划classSolution{public:......
  • 647. 回文子串
    给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。回文字符串是正着读和倒过来读一样的字符串。子字符串是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。输入:s="abc"输出:3解释:三......
  • NYOJ516(优化)
    题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=516 不能直接逐项快速幂计算。#include<iostream>#include<string.h>#include<stdio.h>#include<math.h>usingnamespacestd;typedeflonglongLL;constintN=10000005;constLLMOD=100......
  • hdu 1516(编辑距离+记录路径)
    最开始把问题搞错了,以为是两个串都可以做修改,无论我怎么想都不通。回到这个题目上,这道题和最长公共子序列很相似,思路可以说是一样的,包括记录路径。其实也就是根据递推数组的结果来判断。#include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;constintma......
  • [20230516]完善spsw.sql脚本.txt
    [20230516]完善spsw.sql脚本.txt--//以前写的spsw.sql脚本通过加入提示,产生好的执行计划(sql_id=good_sql_id),替换有问题的sql语句(bad_sql_id).--//现在遇到一个问题,就是现在的dg可以做只读查询,里面的sql语句没有在主库执行过,我抽取的脚本在sqlplus执行时里面的\r字符给--//......
  • 647. Palindromic Substrings刷题笔记
    用动态规划可以做,应该可以优化为只有两个表,而且不用每次res都加classSolution:defcountSubstrings(self,s:str)->int:n=len(s)dp=[[0]*nfor_inrange(n)]res=0foriinrange(n-1,-1,-1):forji......
  • 力扣 647. 回文子串
    647.回文子串给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示......
  • SSO2.0 6-20230516
                 ......