动态规划相关

动态规划:空间换时间,将计算结果暂存起来,避免重复计算。作用和工程中用 redis 做缓存有异曲同工之妙。

动态规划关键是找到初始状态状态转移方程

1,最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

我们用一个 boolean dp[l][r] 表示字符串从 l 到 r 这段是否为回文。试想如果 dp[l][r]=true,我们要判断 dp[l-1][r+1] 是否为回文,只需要判断字符串在(l-1)和(r+1)两个位置是否为相同的字符

初始状态,l=r 时,此时 dp[0][0]=true。
状态转移方程,dp[l][r]=true 并且(l-1)和(r+1)两个位置为相同的字符,此时 dp[l-1][r+1]=true

public String longestPalindrome(String s) {
        int len = s.length();
        if(s==null || len==0) return s;
        int maxLen=1,left=0,right=0;//最长回文串长度,起始点,结束点
        
        boolean [][]dp = new boolean[len][len];
        dp[0][0]=true;
        for(int r =1;r

作者:reedfan
链接:https://leetcode-cn.com/problems/longest-palindromic-substring/solution/zhong-xin-kuo-san-fa-he-dong-tai-gui-hua-by-reedfa/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 

你可能感兴趣的:(动态规划相关)