LeetCode300题计划——5.最长回文子串_node 求最长回文字符串-程序员宅基地

技术标签: LeetCode300题计划  

题目: 给你一个字符串 s,找到 s 中最长的回文子串。

package ListNode;

public class longestPalindrome {
    

	public static void main(String[] args) {
    
		// TODO Auto-generated method stub

	}

}
class Solution5 {
    
    public String longestPalindrome(String s) {
    
        int len = s.length();
        // 特判
        if (len < 2){
    
            return s;
        }

        int maxLen = 1;
        int begin  = 0;

        // 1. 状态定义
        // dp[i][j] 表示s[i...j] 是否是回文串


        // 2. 初始化
        boolean[][] dp = new boolean[len][len];
        for (int i = 0; i < len; i++) {
    
            dp[i][i] = true;
        }

        char[] chars = s.toCharArray();
        // 3. 状态转移
        // 注意:先填左下角
        // 填表规则:先一列一列的填写,再一行一行的填,保证左下方的单元格先进行计算
        for (int j = 1;j < len;j++){
    
            for (int i = 0; i < j; i++) {
    
                // 头尾字符不相等,不是回文串
                if (chars[i] != chars[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][j] == true 成立,表示s[i...j] 是否是回文串
                // 此时更新记录回文长度和起始位置
                if (dp[i][j] && j - i + 1 > maxLen){
    
                    maxLen = j - i + 1;
                    begin = i;
                }
            }
        }
        // 4. 返回值,substring左闭右开
        return s.substring(begin,begin + maxLen);
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MY_NEW_LIFE/article/details/118255626

智能推荐

【WSN】基于蝴蝶优化算法的WSN安全分簇路由设计附matlab代码-程序员宅基地

文章浏览阅读56次。无线传感器网络由大量部署在监测区域内的微型传感器节点通过自组织、自适应的方式构成,这些传感器节点具有一定的感知能力、数据处理能力和通信能力。无线传感器网络中的节点通常以电池为能源,能量非常有限,并且很难得到补充,因此提高能量利用率以延长网络使用寿命一直是研究无线传感器网络时所关心的问题。本文以延长网络的有效使用时间为目标,对无线传感器网络路由协议进行研究与设计。

Python的浅拷贝和深拷贝_普通变量只有浅拷贝-程序员宅基地

文章浏览阅读95次。Python的浅拷贝和深拷贝前提普通的变量赋值浅拷贝和深拷贝浅拷贝和深拷贝的区别面试的时候被问到“知道浅拷贝和深拷贝吗?”“…” “os:什么…没听过…”于是,今天来扒一扒这个知识点。前提浅拷贝和深拷贝,其实就是数据拷贝。当拷贝的是不可变数据类型(数值、字符串、元组),不管是深拷贝和浅拷贝,都指向的是同一地址;当拷贝的对象是可变数据类型(列表、字典),浅拷贝深拷贝才生效。普通的变量赋值我们平常使用的变量赋值,就是浅拷贝。即两个变量共享同一个内存块,相同的内存地址,一旦值发生改变,另外一_普通变量只有浅拷贝

selectpage.js 下拉框实现多选的使用方法_js selectpage-程序员宅基地

文章浏览阅读1.7k次。第一步:下载selectpage.js,并引用js和css<link rel="stylesheet" href="/SelectPage/selectpage.css" type="text/css"></link><script type="text/javascript" src="/SelectPage/selectpage.js"></script>第二步:创建input,定义id为“selectPage”<input t.._js selectpage

Python爬虫工具:必会用的 6 款 Chrome 插件,2024年最新Python面试题及答案2024百度-程序员宅基地

文章浏览阅读883次,点赞7次,收藏11次。EditThisCookie 是一个 Cookie 管理器,可以很方便的添加,删除,编辑,搜索,锁定和屏蔽 Cookies。可以将登录后的 Cookies 先保存到本地,借助 cookielib 库,直接爬取登录后的数据。编写 Xpath 之后会实时显示匹配的数目和对应的位置,方便我们判断语句是否编写正确。它支持复杂的网站结构,数据支持文本、连接、数据块、下拉加载数据块等各种数据类型。操作简单,只需要鼠标点击和简单的配置,就能快速的爬取 Web 端的数据。此外,还能将爬取的数据导出到 CSV 文件中。

关于python启动illustrator程序后调用jsx脚本-程序员宅基地

文章浏览阅读123次。2.arguments为python传过来的参数,是一个数组,这里的arguments不能改成其他名字,否则接收不到python传过来的参数。2.arguments为传递进jsx脚本中的参数,类型是一个数组。在jsx是取参数为固定的变量名,这个变量名是无法自定义名字的。1.ret用来接收jsx脚本return的结果。1.main为自定义函数。

boost::interprocess::managed_shared_memory(2)(std::deque)-程序员宅基地

文章浏览阅读179次。struct shareDataEx : shareData{ int index; int total_size;};typedef managed_shared_memory::segment_manager segment_manager_t; //段管理器typedef allocator&lt;shareDataEx, segmen..._boost::interprocess deque

随便推点

为什么我们从 Python 切换到 Go_python go,Golang开发快速学习-程序员宅基地

文章浏览阅读195次,点赞4次,收藏3次。根据 StackOverflow的数据, 38% 的开发人员知道 Java, 19.3%的 人知道 C++,只有 4.6%的 人知道 Go。但是,使用正确的工具,Go 的包管理工作得很好。这些功能玩起来很有趣,但是,正如大多数程序员会同意的那样,在阅读别人的作品时,它们通常会使代码更难理解。这些功能玩起来很有趣,但是,正如大多数程序员会同意的那样,在阅读别人的作品时,它们通常会使代码更难理解。与以编译速度慢而闻名的 Java 和 C++ 等语言相比,Go 的快速编译时间是一项重大的生产力胜利。

分布式任务调度,定时任务的处理方案_springcloud定时任务解决方案-程序员宅基地

文章浏览阅读1.8k次。4.复制配置文件,文件在xxl-job项目的 xxl-job-2.3.1\xxl-job-executor-samples\xxl-job-executor-sample-springboot\src\main\java\com\xxl\job\executor\core\config 的XxlJobConfig。这个命令将会创建一个名为 xxl-job-admin 的容器,并且将容器的 8080 端口映射到宿主机的 8080 端口,使得我们可以通过浏览器访问到 XXL-Job 的管理界面。_springcloud定时任务解决方案

启动Elasticsearch服务,提示如下错误信息:maybe these locations are not writable or multiple nodes were started_elasticsearch启动报错maybe these locations are not wri-程序员宅基地

文章浏览阅读5.2k次。Elasticsearch 服务启动,提示错误信息:[o.e.b.ElasticsearchUncaughtExceptionHandler] [node-1] uncaught exception in thread [main]org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: failed to obtain node locks, tried [[/path/to/data/my-app_elasticsearch启动报错maybe these locations are not writable or multiple node

HTML完整版,学HTML看这篇就够了-程序员宅基地

文章浏览阅读844次,点赞23次,收藏18次。什么是HTML?全称:Hyper Text Markup Language,超文本标记语言超文本:指的是网页中可以包含图片,链接,音频,视频等多媒体内容标记

用C语言编写程序,从键盘输入以下5个学生的学号、姓名,以及数学、语文和英语成绩,写到文本文件f2.txt中,再从文件中取出数据,计算每个学生的总成绩和平均分,并将结果显示在屏幕上。 提示:在文件读写的...-程序员宅基地

文章浏览阅读1.2k次。这是一个简单的C语言程序实现上述要求的示例:#include <stdio.h>struct student { int num; char name[20]; int math; int chinese; int english;};int main() { struct student s[5]; int i; ..._c语言从键盘输入以下5个学生的学号、姓名,以及数学、语文和英语成绩,写到文本文件

信息系统项目管理(第四版)(高级项目管理)考试重点整理 第15章 项目风险管理(一)-程序员宅基地

文章浏览阅读668次,点赞23次,收藏20次。每个项目都在两个层面上存在风险:一是每个项目都有会影响项目达成目标的单个风险;二是由单个风险和不确定性的其他来源联合导致的整体项目风险。项目风险管理过程同时兼顾这两个层面的风险。

推荐文章

热门文章

相关标签