lc5最长回文子串「建议收藏」

lc5最长回文子串「建议收藏」publicclassSolution{publicStringlongestPalindrome(Strings){intlen=s.length();if(len<2){returns;}char[]charArray=s.toCharArray();//要的是回文子串而非仅仅要长度intmax..

大家好,又见面了,我是你们的朋友全栈君。

在这里插入图片描述
在这里插入图片描述

public class Solution { 
   

    public String longestPalindrome(String s) { 
   
        int len = s.length();
        if (len < 2) { 
   
            return s;
        }
        char[] charArray = s.toCharArray();
       
        //要的是回文子串 而非仅仅要长度
        int maxLen = 1;
        int begin = 0;
        
        // 初始化dp数组 dp[i][j] 表示 s[i..j] 是否是回文串
        boolean[][] dp = new boolean[len][len];
        // 初始化:所有长度为 1 的子串都是回文串
        for (int i = 0; i < len; i++) { 
   
            dp[i][i] = true;
        }

        // 递推开始
        // 先枚举子串长度 通过left和长度确定 左右边界
        for (int L = 2; L <= len; L++) { 
   
            // 枚举左边界,左边界的上限设置可以宽松一些
            for (int i = 0; i < len; i++) { 
   
                // 由 L 和 i 可以确定右边界,即 j - i + 1 = L 得
                int j = L + i - 1;
                // 如果右边界越界,就可以退出当前循环
                if (j >= len) { 
   
                    break;
                }
                //
                if (charArray[i] != charArray[j]) { 
   
                    dp[i][j] = false;
                } 
                else { 
   
                    if (j - i < 3) { 
   
                        dp[i][j] = true;
                    } 
                    else { 
   
                        dp[i][j] = dp[i + 1][j - 1];
                    }
                }

                // 只要 dp[i][L] == true 成立,就表示子串 s[i..L] 是回文,此时记录回文长度和起始位置
                if (dp[i][j] && L > maxLen) { 
   
                    maxLen = L;
                    begin = i;
                }
            }
        }
        return s.substring(begin, begin + maxLen);
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163997.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm2021.8.3永久激活码[最新免费获取]

    (pycharm2021.8.3永久激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月25日
    75
  • 一文详解微服务架构

    一文详解微服务架构

    2022年2月11日
    41
  • 根据/proc/partitions获取插入的U盘设备名称

    根据/proc/partitions获取插入的U盘设备名称1 在/proc/partitions中存放着U盘的设备名称,如sda,sdb2等,以sd开头。major主设备号,比如一个U盘有3个分区,主设备名为sda,major为8,分区的major也为8,minor则为分区号,sda1,sda2,minor值为1,2sda的minor为0,name即为设备名,连接/dev./设备名,就可以挂载到一个目录。blocks表示物理设备逻辑块

    2022年6月26日
    32
  • 安全工具-Sparta

    安全工具-SpartaSparta是一个集端口扫描、网络扫描、服务探测以及暴力激活成功教程等多项功能于一身的工具,kali中已经预装了该工具,可直接使用。  &gt;输入目标IP,开始扫描即可探测出开放的端口及服务  &gt;选中ssh服务,对其进行暴力激活成功教程  &gt;确认IP地址、端口、扫描服务等,上传用户名-密码字典后Run  &gt;查看扫描log,探测出一个密码被激活成功教程Hydrav8.2(c…

    2025年6月9日
    2
  • 大规模储能技术_新技术储备

    大规模储能技术_新技术储备eBPF-Linux性能优化的超能力

    2025年11月30日
    8
  • java中数组转成list_java数组转json

    java中数组转成list_java数组转jsonJava数组转List的几种方法一、Arrays.asList二、Collections.addAll三、Arrays.stream(arr).collect(Collectors.toList())本文提供了几种Java中常用的数组转List的方法一、Arrays.asList//Array转ListString[]arr={“a”,”b”,”c”};List<String>list=Arrays.asList(arr);System.out.println

    2022年8月23日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号