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

网站建设性能指标搜索引擎优化自然排名的区别

网站建设性能指标,搜索引擎优化自然排名的区别,江苏省建设教育协会网站首页,巩义网站建设案例判断回文的公式 s[l]s[r] and is_huiwen(l1,r-1) 首先如果0,r是回文直接返回0,不需要分割,然后从左往右,从1开始如果是回文就切一刀最右边是r-1,然后继续判断,取最小,因为过程中有很多重复的过程用cache记录…

判断回文的公式 s[l]==s[r] and is_huiwen(l+1,r-1)
首先如果0,r是回文直接返回0,不需要分割,然后从左往右,从1开始如果是回文就切一刀最右边是r-1,然后继续判断,取最小,因为过程中有很多重复的过程用@cache记录缓存

132. 分割回文串 II | 最少分割次数

题目描述

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。返回符合要求的 最少分割次数

示例

示例 1:
输入: s = "aab"
输出: 1
解释: 只需一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。
示例 2:
输入: s = "a"
输出: 0
示例 3:
输入: s = "ab"
输出: 1

提示:

  • 1 <= s.length <= 2000
  • s 仅由小写英文字母组成

解题思路

1. 直接枚举(超时)

最直观的思路是使用 回溯 + 记忆化搜索 来遍历所有可能的划分方案,并计算最小的分割次数。

但由于字符串长度可达 2000,直接用回溯会 超时,需要更优的方法。

2. 动态规划(最优解)

我们可以使用 动态规划 来优化求解过程。

状态定义
  • dp[i] 表示 以索引 i 结尾的子串 s[0:i+1] 的最少分割次数
状态转移
  • 如果 s[0:i] 本身是回文,则不需要分割,dp[i] = 0
  • 否则,我们枚举所有可能的分割点 j,如果 s[j+1:i] 是回文,则 dp[i] = min(dp[i], dp[j] + 1)
如何快速判断回文

可以 预处理 一个 is_palindrome[i][j] 数组,使 is_palindrome[i][j] = True 表示 s[i:j+1] 是回文。

时间复杂度
  • 预处理回文 O(n^2)
  • 动态规划 O(n^2)
  • 总体时间复杂度 O(n^2)

代码实现(Python)

方法 1:回溯(超时)

from typing import Listclass Solution:def partition(self, s: str) -> List[List[str]]:n = len(s)ans = []path = []# 递归函数def dfs(i: int) -> None:if i == n:ans.append(path.copy())returnfor j in range(i, n):a = s[i:j+1]if a == a[::-1]:  # 判断是否是回文path.append(a)dfs(j+1)path.pop()dfs(0)return ans

问题:此方法会生成所有回文划分方案,无法直接求得最小分割次数,且 时间复杂度过高,容易超时。


方法 2:动态规划

class Solution:def minCut(self, s: str) -> int:n = len(s)# 预处理回文is_palindrome = [[False] * n for _ in range(n)]for right in range(n):for left in range(right + 1):if s[left] == s[right] and (right - left <= 2 or is_palindrome[left + 1][right - 1]):is_palindrome[left][right] = True# dp 数组dp = [float('inf')] * nfor i in range(n):if is_palindrome[0][i]:  # 整个子串是回文,不需要切割dp[i] = 0else:for j in range(i):if is_palindrome[j+1][i]:  # 如果 s[j+1:i+1] 是回文dp[i] = min(dp[i], dp[j] + 1)return dp[n - 1]

代码解析

  1. 预处理回文表is_palindrome[i][j] 预计算 s[i:j+1] 是否是回文。
  2. 动态规划计算最小分割次数
    • dp[i] 表示 s[0:i+1] 需要的最小分割次数。
    • s[0:i] 本身是回文,则 dp[i] = 0
    • 否则遍历 j,如果 s[j+1:i] 是回文,则 dp[i] = min(dp[i], dp[j] + 1)

时间复杂度分析

  • 预处理回文O(n^2)
  • 动态规划O(n^2)
  • 总时间复杂度O(n^2)

复杂度对比

方法适用情况时间复杂度是否超时
回溯(DFS)小规模数据指数级 O(2^n)超时
动态规划任意规模数据O(n^2)通过

总结

  • 暴力回溯 只能用于 求所有划分方案,但无法高效求最优解。
  • 动态规划(DP)最优解,预处理回文后,可以在 O(n^2) 时间内求解最少分割次数。
  • 预处理 is_palindrome 可以减少重复计算,提升性能。

📌 动态规划是求解最少分割次数的最佳方法!


文章转载自:

http://oCwKYejD.ghxsn.cn
http://CnPqeCkK.ghxsn.cn
http://vu6xbUaJ.ghxsn.cn
http://3cdrOkNm.ghxsn.cn
http://FzqeN1Cs.ghxsn.cn
http://7sEK6WwK.ghxsn.cn
http://TD9nKKFC.ghxsn.cn
http://5IythQjs.ghxsn.cn
http://ZHbagC4w.ghxsn.cn
http://LZ4807bC.ghxsn.cn
http://K6sYCsa2.ghxsn.cn
http://04rFSmrb.ghxsn.cn
http://fhA65RBc.ghxsn.cn
http://ZLySeb4h.ghxsn.cn
http://bp98Y4ci.ghxsn.cn
http://22zQcR6E.ghxsn.cn
http://lxXL7gpf.ghxsn.cn
http://q9u4UKfK.ghxsn.cn
http://iQpEeZvV.ghxsn.cn
http://xV8jnweb.ghxsn.cn
http://Q3rE8l1Q.ghxsn.cn
http://KWI0zZ1v.ghxsn.cn
http://Am68ApAL.ghxsn.cn
http://5d1ylcE0.ghxsn.cn
http://NPA9VTAf.ghxsn.cn
http://ZuWc0W1h.ghxsn.cn
http://W0Bzdzol.ghxsn.cn
http://O9VFN3o0.ghxsn.cn
http://lcvNj1yk.ghxsn.cn
http://Se0Y3Qrd.ghxsn.cn
http://www.dtcms.com/wzjs/758613.html

相关文章:

  • 如何自建公司网站网络专业的网站建设价格低
  • 网站信息登记表做片头片尾比较好的网站
  • 广东住房和城乡建设部网站企业logo标志设计免费
  • 小程序商城怎么开通seo优化网站技术排名百度推广
  • 项目信息网站哪个好深圳市建设股份有限公司
  • 南京网站微信建设非小号是根据国外哪个网站做的
  • 优化seo网站做网站教程第一课
  • 网站建设及照片使用保密协议网站建设有哪些费用
  • 微信网站的建立湛江企业模板建站
  • 建设网站需要什么软件公司制作一个网站要多少钱
  • 邢台做网站服务商百度一下首页网页
  • 华为企业网站建设需求分析南通市建设监理协会网站
  • 租车网站模板响应式网站的制作
  • 深圳松岗 网站建设深圳宣传片制作服务
  • 山西住房和城乡建设部网站怎样做网站搜索推广电话成都
  • 网站建设与设计pptai智能写作平台
  • 礼物网站模板唐山网站建设最好的
  • 好公司的网站设计企业网搭建
  • 如何使用服务器ip做网站企业运营策划公司
  • 技术支持 济源网站建设西安php网站制作
  • 坪山做网站公司9夜夜做新郎网站
  • 网站怎么做404页面跳转wordpress将两个页面拼接
  • 凡客诚品官方网站首页西安的互联网公司
  • 做网站哪个编辑器好用免费行情软件网站下载大全
  • 西安网站策划企业网站搜索引擎拓客
  • win7系统做网站服务器系统php mysql网站后台源码
  • 微信建一个网站如何做网站页面赚钱
  • 统一汤达人选择她做汤面活动网站在线网站推广工具
  • 上传wordpress到优化教程网
  • NET网站开发程序员招聘wordpress发微信公众号