当前位置: 首页 > news >正文

机试刷题_NC17 最长回文子串【python】

NC17 最长回文子串

在这里插入图片描述

动态规划思路
1.定义状态:
设 dp[i][j] 表示字符串 A 从第 i 个字符到第 j 个字符是否为回文子串。
如果是回文子串,dp[i][j] = True,否则为 False。

2.状态转移方程:
如果 A[i] == A[j],并且 dp[i+1][j-1] 为 True,那么 dp[i][j] = True。
即:dp[i][j] = (A[i] == A[j]) and dp[i+1][j-1]。

3.边界条件:
单个字符一定是回文子串,即 dp[i][i] = True。
两个字符时,如果 A[i] == A[j],则 dp[i][j] = True。

4.初始化:
初始化所有长度为 1 的子串为回文子串。
初始化所有长度为 2 的子串是否为回文子串。

5.填充 DP 表:
从长度为 3 开始,逐步填充 DP 表,直到长度为 n。

6.结果:
在填充 DP 表的过程中,记录最长的回文子串长度。

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param A string字符串 
# @return int整型

class Solution:
    def getLongestPalindrome(self , A: str) -> int:
        # 动态规划
        n = len(A)
        if n<=1:
            return n

        dp = [[False]*n for i in range(n)]
        max_len = 1
        
        # 单个字符一定是回文子串
        for i in range(n): 
            dp[i][i] = True
        
        # 检查长度为2的子串
        for i in range(n-1): 
            if A[i]==A[i+1]:
                dp[i][i+1] = True
                max_len = 2

        # 检查长度大于2的子串
        for length in range(3,n+1): #子串长度从3到n
            for i in range(n-length+1): #子串起始位置
                j = i+length-1          #子串结束位置
                if A[i]==A[j] and dp[i+1][j-1]:
                    dp[i][j] = True
                    max_len = max(max_len,length)
        return max_len
        

相关文章:

  • PostgreSQL:模拟插入数据和查询(带时间)
  • 三轴加速度推算姿态角的方法,理论分析和MATLAB例程
  • Leetcode3162:优质数对的总数 I
  • Spring Boot @Async 注解深度指南
  • 湘潭大学计算机复试详细攻略(调剂)
  • Ubuntu 下 nginx-1.24.0 源码分析 - NGX_CYCLE_POOL_SIZE 宏
  • 智能生活综合平台需求规格说明书
  • 弱监督语义分割学习计划(1)-简单实现CAM但是效果不好
  • wordpress按不同页调用不同的标题3种形式
  • AOP进阶-02.通知顺序
  • 上传securecmd失败
  • 【万字长文】开源之播对话白鲸开源CEO郭炜--乐观主义的开源精神走得更远
  • 【Web安全】图片验证码DOS漏洞
  • C# tostring 转换成16进制
  • 【热力图 Heatmap】——1
  • NLP07-朴素贝叶斯问句分类之数据集加载(1/3)
  • 《OpenCV》——光流估计
  • 计算机基础:二进制基础01,比特与字节
  • 【最大通过数——二分】
  • vs2015下使用openmp
  • 中方是否认同俄方关于新纳粹主义观点?外交部:联大曾多次通过相关决议
  • 印巴战火LIVE丨印巴互相发动无人机袭击,巴官员称两国已在国安层面接触
  • 上海交大:关注到对教师邵某的网络举报,已成立专班开展调查
  • 比尔·盖茨:未来20年通过盖茨基金会捐出几乎全部财富,2045年底基金会停止运营
  • 首届上海老年学习课程展将在今年10月举办
  • 新消费观察| 零售品牌 “走出去” ,如何开辟“新蓝海”?