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

网站开发周期优秀网页设计作品案例欣赏

网站开发周期,优秀网页设计作品案例欣赏,怎么进入网站后台管理系统,windows wordpress可以最长回文子串 给你一个字符串 s,找到 s 中最长的 回文子串。 回文性 如果字符串向前和向后读都相同,则它满足 回文性 子字符串子字符串 是字符串中连续的 非空 字符序列。 动态规划法 class Solution { public:string longestPalindrome(string s) {i…

最长回文子串

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

回文性
如果字符串向前和向后读都相同,则它满足 回文性
子字符串
子字符串 是字符串中连续的 非空 字符序列。

动态规划法

class Solution {
public:string longestPalindrome(string s) {int n = s.size();if (n <= 1) return s;vector<vector<bool>> dp(n, vector<bool>(n, false));int start = 0, maxLen = 1;for (int i = 0; i < n; ++i) dp[i][i] = true;for (int i = 0; i < n - 1; ++i) {if (s[i] == s[i + 1]) {dp[i][i + 1] = true;start = i;maxLen = 2;}}for (int len = 3; len <= n; ++len) {for (int i = 0; i + len - 1 < n; ++i) {int j = i + len - 1;if (s[i] == s[j] && dp[i + 1][j - 1]) {dp[i][j] = true;start = i;maxLen = len;}}}return s.substr(start, maxLen);}
};

首先,我们获取字符串 s 的长度 n。如果字符串长度小于或等于 1,则字符串本身就是回文的(单个字符本身就是回文),直接返回字符串。

dp 是一个二维布尔型数组,dp[i][j] 用来表示子串 s[i...j] 是否为回文串。数组大小为 n x n,初始化为 false

每个单字符子串(即 s[i...i])自然是回文的,因此将 dp[i][i] 设置为 true

接下来,我们处理长度为 2 的子串。如果 s[i] == s[i+1],那么 s[i...i+1] 是回文串,设置 dp[i][i+1] = true。此时,我们还更新 startmaxLen,记录最长回文子串的起始位置和长度。

从长度为 3 的子串开始,我们逐步扩展到更长的回文子串。具体来说,len 表示当前子串的长度,从 3 一直增加到 n

对于每个长度为 len 的子串,我们通过以下条件判断是否为回文:

  • s[i] == s[j]:当前子串的首尾字符相同。
  • dp[i+1][j-1]:即子串 s[i+1...j-1] 是否是回文。

如果这两个条件都成立,那么 s[i...j] 也是回文子串,更新 dp[i][j] = true,并更新 startmaxLen,记录当前最长回文子串的起始位置和长度。

输入字符串 s = "babad"

  • 长度为 1 的子串:我们从一开始就知道每个单独的字符都是一个回文子串,所以 dp[i][i] = true 对于所有 i 都成立。对于 s = "babad",初始化时,dp 数组是这样的:

dp = [ [true, false, false, false, false], [false, true, false, false, false], [false, false, true, false, false], [false, false, false, true, false], [false, false, false, false, true] ]

  • 长度为 2 的子串:接着,代码检查相邻的字符是否相同。如果相同,设置 dp[i][i+1] = true。在 s = "babad" 中,s[0] != s[1]b != a),s[1] != s[2]a != b),s[2] != s[3]b != a),s[3] != s[4]a != d)。所以 dp 数组没有更新。

dp 仍然是:

dp = [ [true, false, false, false, false], [false, true, false, false, false], [false, false, true, false, false], [false, false, false, true, false], [false, false, false, false, true] ]

  • 长度为 3 及以上的回文子串:接着,程序检查长度为 3 及以上的子串,逐步扩展回文子串的长度。对每一个 len(长度从 3 到 n),我们依次检查每个子串的起始位置 i

    • len = 3

      • 对于 s[0...2] = "bab"s[0] == s[2]b == b),并且 dp[1][1] = true(即 "a" 是回文)。所以 dp[0][2] = truestart = 0maxLen = 3
      • 现在 dp 数组更新为:

      dp = [ [true, false, true, false, false], [false, true, false, false, false], [false, false, true, false, false], [false, false, false, true, false], [false, false, false, false, true] ]

      这时,我们已经找到了 "bab" 作为一个回文子串。

  • 继续检查更长的回文子串:

    • len = 4
      • 对于 s[1...4] = "abad"s[1] != s[4]a != d),所以 dp[1][4] 不会被设置。
    • len = 5
      • 对于 s[0...4] = "babad"s[0] != s[4]b != d),所以 dp[0][4] 也不会被设置。

经过这些步骤,程序最终会返回最长的回文子串 "bab",因为 start = 0maxLen = 3

http://www.yayakq.cn/news/22991/

相关文章:

  • 用phpcms建站的网站简易的网站建设
  • 梁山网站建设公司wordpress mysql权限设置密码
  • 广州设计网站建设系统集成项目管理
  • 网站制作完工验收单网站右侧返回顶部
  • 怎么向百度提交网站常见的营销策略有哪些
  • 深圳市南山区做网站的小公司网站建设一样注意什么
  • 手机网站生成app客户端分类目录网站平台
  • 南京市建设工程网站易语言网站建设
  • 广西网站建设开发外包网站开发中什么是站点
  • 广州建设网站是什么关系家在龙岗
  • 电商设计网站素材一键优化表格
  • 网站建设 发展方向做网站毕设任务书
  • 网站文章图片如何跳转无锡网络公司有哪些
  • 怎么使用域名访问网站常州淄博网站优化
  • 网站模板价格汽车配件响应式网站
  • 中国循环经济网站开发与设计html网站作业
  • 做网站自己申请域名还是建站公司域名解析 网站建设
  • 网站建设的作用和意义网站源码怎么写
  • 广州市建设和水务局网站遂宁市做网站的公司
  • 网站建设预付流程网络科技公司销售是做什么的
  • 我的网站被黑了wordpress同步文章插件
  • 网站推广途径和推广要点的案例讨论如何学编程入门教程
  • 除了外链 还有什么办法使网站提高排名汉中网络推广
  • 电脑网站和手机网站怎么做相同路径学历提升文案
  • 璧山网站建设东莞小程序开发解决方案
  • 门户类网站开发多少钱网上商城开发方案
  • 建设房产网站设计方案流程图
  • 苏州建设交通高等职业技术学校网站山东嘉祥做网站的有哪几家
  • 类似freenom的免费域名网站wordpress社区插件
  • dede网站开发步骤wordpress nosql