动态规划 最长回文子串
发布日期:2021-10-24 16:04:27 浏览次数:4 分类:技术文章

本文共 899 字,大约阅读时间需要 2 分钟。

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example 1:

Input: "babad"Output: "bab"Note: "aba" is also a valid answer.

Example 2:

Input: "cbbd"Output: "bb"
public static String longestPalindrome(String s) {        int n = s.length();        if(n==0 || s==null)            return s;        String reString = null;        boolean[][] dp = new boolean[n][n];        for(int i = n-1;i >= 0; i--) {            for(int j = i; j < n; j++) {                dp[i][j] = s.charAt(i)==s.charAt(j)&&(j-i<3 || dp[i+1][j-1]);    //判断是否为回文串                if(dp[i][j] && (reString==null || reString.length()

使用boolean创建一个二维数组dp[][],dp[i][j]的值代表从第i个字符到第j个字符的字符串是否为回文串。

首先判定一个字符串是回文串有什么特点,如果dp[i][j]是回文串,那么dp[i+1][j-1]也是回文串,由此我们可以得出:

dp[i][j] = s.charAt(i)==s.charAt(j)&&(j-i<3 || dp[i+1][j-1])

转载于:https://www.cnblogs.com/tiandiou/p/9679396.html

转载地址:https://blog.csdn.net/weixin_30802171/article/details/98188983 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:20172325 2018-2019-2 《Java程序设计》第六周学习总结
下一篇:使用 vmstat 监测系统性能

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月13日 13时44分08秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章