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

网站建设原型图在网上做试卷的网站

网站建设原型图,在网上做试卷的网站,大连线上教学,什么后台做网站安全题目描述: 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。 返回符合要求的 最少分割次数 。 代码思路: 预处理字符串(使用Manacher算法的一部分): 为了方便处理回文串&am…

题目描述:

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。

返回符合要求的 最少分割次数 。

代码思路:

  1. 预处理字符串(使用Manacher算法的一部分)

    • 为了方便处理回文串(尤其是偶数长度的回文串),代码首先构造了一个新的字符串 ss。这个新字符串通过在原字符串 s 的每个字符之间以及开头和结尾插入特殊字符(这里是 #)来构造。
    • 这样做的好处是,无论是奇数长度还是偶数长度的回文串,在新字符串 ss 中都会以一个字符为中心形成对称。
  2. 使用Manacher算法计算回文半径

    • 接下来,代码利用Manacher算法的一个变种来计算新字符串 ss 中每个字符的回文半径,并将结果存储在数组 p 中。
    • p[i] 表示以 ss[i] 为中心的回文串的半径长度(注意,这里不包括中心字符本身)。
    • Manacher算法通过利用已知的回文信息来减少不必要的比较,从而提高效率。
  3. 转换回文半径为原始字符串的回文信息

    • 由于 ss 是通过在 s 的字符间插入 # 构造的,因此原始字符串 s 中的回文串信息可以通过 p 数组中的回文半径来计算。
    • 需要注意的是,ss 中的索引 j 和原始字符串 s 中的索引 i 之间存在对应关系,即 j = 2 * i + 1(因为我们在每个字符之间都插入了一个 #)。
    • 因此,当 ss 中的回文中心 j 的回文半径 p[j] 减去 1 后,它表示的是原始字符串 s 中以某个位置为中心的最长回文串的长度。
  4. 动态规划求解最少分割次数

    • 定义一个动态规划数组 dp,其中 dp[i] 表示字符串 s 的前 i 个字符所需的最少分割次数。
    • 初始化 dp[0] = -1(表示空字符串不需要分割)。
    • 然后,对于每个可能的子串 s[i:j](其中 i 从 1 到 n1j 从 i 到 n1),检查它是否是一个回文串。
    • 如果 s[i:j] 是回文串,则通过检查新字符串 ss 中对应回文中心 mid 的回文半径 p[mid] 是否覆盖 s[i:j] 来判断。具体来说,如果 p[mid] - 1 >= j - i + 1 成立,则说明 s[i:j] 是一个回文串。
    • 如果 s[i:j] 是回文串,则更新 dp[j] 为 dp[i-1] + 1 和当前 dp[j] 的较小值。这里 dp[i-1] + 1 表示在 i-1 位置之前的子串所需的最少分割次数加上当前这个回文子串的一次分割(实际上不需要真的进行分割,因为 s[i:j] 已经是一个完整的回文串了,但这里是为了保持动态规划的状态转移逻辑)。
  5. 返回结果

    • 最后,dp[-1] 存储了整个字符串 s 所需的最少分割次数(注意,由于 dp 数组的索引是从 0 开始的,而字符串 s 的长度是 n1,所以 dp[-1] 实际上对应的是 dp[n1],即整个字符串的最少分割次数)。

代码实现:

class Solution:def minCut(self, s: str) -> int:# Manacher模版ss = '#'for c in s:ss += c + '#'c = r = 0n = len(ss)p = [0] * nfor i in range(n):k = min(p[2 * c - i],r - i) if i < r else 1while i - k >= 0 and i + k < n and ss[i - k] == ss[i + k]:k += 1p[i] = kif i + k > r:r = i + kc = i# p[i]为 ss 中回文半径 # p[j] - 1为原始串 s 回文长度# i = j * 2 + 1n1 = len(s)dp = [inf] * (n1 + 1)dp[0] = -1for i in range(1,n1 + 1):for j in range(i,n1 + 1):mid = i + j - 1 # 回文中心# 判断s[i:j]是否是回文if  p[mid] - 1 >= j - i + 1: # 中心的回文串长度覆盖s[i:j]dp[j] = min(dp[j],dp[i - 1] + 1)return dp[-1]

http://www.dtcms.com/a/459703.html

相关文章:

  • 建设厅教育培训网站网站怎样多语言
  • 新乡手机网站建设服务深圳市最新消息
  • htm网站的维护做烘焙的网站
  • 公司网站开发比选做网站需要注册公司
  • 优秀网站建设空间17一起做网站app
  • 网站建设招标书技术介绍wordpress分享小图片不
  • 网站都必须要备案吗洋气的广告公司名字
  • 企业网站制作流程江门关键词优化排名
  • 中国企业网官方网站wap网站模板
  • 六安市城乡建设网站网站建设技术员保密协议
  • 合肥做网站公自己搞个网站
  • 建网站seo开发公司自己买自己的商品房
  • 防止访问网站文件夹自己网站怎么建设
  • 徐州鼓楼区建设网站四平市建设局网站
  • 大型网站开发 框架可植入代码网站开发
  • 个人网站备案 费用长沙ui设计公司
  • 沈阳做招聘网站世界杯32强排名
  • 网站怎么开发代码楼盘网站开发报价
  • 免费建站系统对比班级网页设计素材
  • 做一个网站成本大概多少钱科技公司排名
  • 个人注册公司在哪个网站申请跨境电商平台有哪些个人可以做
  • 宁波易企网做的网站html5手机版
  • 商丘加盟小吃网站wordpress 心理
  • 外贸有哪些网站兰州有互联网公司嘛
  • wordpress 上传网站吗企业网站空间多大
  • 上海景泰建设股份有限公司网站做网站赚钱一般做什么
  • 北京南站到北京西站一个企业网站的建设流程
  • wordpress下一篇东莞推广seo关键词排名优化
  • 做网站工具wordpress ajax error
  • 英文seo网站建设服装网站建设的规模和类别