题解 | #密码截取#动态归划

密码截取

https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

import java.util.Scanner;

// 如果最大回文子串的长度等于字符串长度,则说明是回文字符串
// 一个回文串的两端相同,去掉两端后还是回文串
// 采用动归的方式不段求最大回文子串长度
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();
        int len = input.length();
        int[][] dp = new int[len][len];
        for (int i = len - 1; i >= 0; i--) { // 横向遍历
            dp[i][i] = 1; // 单个字符串就是回文字符串
            for (int j = i + 1; j < len; j++) { // 非单个字符的判断,纵向遍历
                if (input.charAt(i) == input.charAt(
                            j)) { // 两边字符相同,判断内部是否是回文串
                    if (j - i - 1 == dp[i + 1][j -
                                               1]) { // 如果是回文串,则最大回文子串长度等于字符串长度
                        dp[i][j] = dp[i + 1][j - 1] + 2; // 回文串长度加2
                        continue;
                    }
                }
                // 不是回文串,则最长回文子串的长度在内部
                dp[i][j] = Math.max(
                               dp[i + 1][j], // 左边的一个
                               dp[i][j - 1] // 右边的一个
                           );
            }
        }
        System.out.println(dp[0][len - 1]);
    }
}

#最长回文子串#
全部评论

相关推荐

喵_coding:这实习干啥了? 没写出来一点产出啊 好好回忆一下干了啥 问问ai 问问大佬 准备些话术就好了
点赞 评论 收藏
分享
2025-12-28 22:19
门头沟学院 Java
不敢追165女神:简历写得毫无特点,你说你要是大二或者大三找寒假实习到暑期实习这段时间,你的简历还能约到面试。但是你是研究生哥,面试官不会因为你是研究生而降低要求,反而会觉得你是研究生才学了这么一点?为什么我不找个同阶段的本科生?
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务