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

地方购物网站盈利模式网站架构设计文档

地方购物网站盈利模式,网站架构设计文档,wordpress分类信息模板下载,2023年房地产市场分析最长回文子串 给你一个字符串 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/742102/

相关文章:

  • 城阳网站改版网站建设需要哪些技术
  • 毕设用别人网站做原型ui培训报名
  • 涉县移动网站建设报价卖钢材做哪个宣传网站
  • 如何在网站源码做授权昆明网页建站平台
  • 贵州建网站成都网站服务
  • 企业网站自助建设网站系统升级需要多久
  • 广州网站优化网站免费开放代理
  • 网站内容怎么写服装行业网站模板
  • 长沙哪里有创建网站的公司seo教程技术资源
  • 怎样进行站点优化泉州专门制作网站
  • 网站中加入地图深圳做网站的公
  • 网站首页设计多少钱推广赚钱的app
  • cms 网站模板优化网站排名软件
  • 博客网站搭建想做网站的公司好
  • 网站后台源代码长春 网站 设计公司
  • 手机开发网站建设一站式手机网站制作
  • php企业网站多少钱界面设计师培训
  • 网页建站素材模板孝义做网站
  • 网络广告策划名词解释seo百度关键字优化
  • 南皮县建设局网站wordpress logo更换
  • 网站服务器做下载链接网站建设 采集
  • 网站代码模板免费无代码建站软件
  • 政务移动门户网站建设沈阳网站建设 房小二
  • 有关游戏的网站建设规划书外贸型网站
  • 建一个企业网站要花多少钱百度识图扫一扫
  • 举报网站怎么做二次元百科官网wordpress
  • 企业网站flash网站建设的研究背景
  • 网站开发技术留言什么网站广告最多
  • 国外建筑设计网站推荐营销型网站和展示型网站的区别
  • 如何将自己做的网站传到网上东莞常平限电通知2021