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

上海网站建设联系电话关键字是什么意思

上海网站建设联系电话,关键字是什么意思,广州网络推广专员,抗击疫情网页制作模板最长回文子串 给你一个字符串 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.ds6.com.cn/news/82936.html

相关文章:

  • 用微信做网站推广点击器
  • pos机网站报单怎么做网文网站排名
  • 网站建设ktv搜索引擎优化工具
  • 做黑网站吗百度网站大全旧版
  • dede网站seo入门培训课程
  • 免费自己做网站吗河南网络推广那家好
  • 破解网站后台密码有人做吗seo公司运营
  • 淘宝联盟微信里做网站网络营销推广渠道
  • 企业培训 电子商务网站建设 图片爱站网站
  • 河南科技园网站建设免费站长工具
  • 宜昌网站制作电商运营培训班多少钱
  • 做网站简历怎么写软件推广是什么工作
  • 南通网站建设外包四川seo关键词工具
  • 软件公司都是帮别人做网站么关键词优化教程
  • 做设计都有什么网站aso优化榜单
  • 怎么看网站谁做的游戏推广平台哪个好
  • 怎么给客户谈做网站中央广播电视总台
  • winxp下做网站名风seo软件
  • 网站建设的背景有哪些推广网站有效的免费方法
  • 湘西网站建设吧网络推广外包公司干什么的
  • 外贸自建站源码网站排名优化推广
  • 哪有专做注册小网站的双桥seo排名优化培训
  • 怎么登录住房城乡建设部网站seo站内优化和站外优化
  • 网店网站设计seo软件资源
  • 网站项目建设目标百度推广哪种效果好
  • 有了空间怎么做网站品牌营销策划ppt
  • 专做国外旅游的网站怎么找需要推广的商家
  • 网站搭建中企动力第一51趣优化网络seo工程师教程
  • 英文网站建设szjijie企业培训课程设计
  • 石家庄网站建设开发注册推广赚钱一个80元