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

简单个人网站制作教程seo优化的作用

简单个人网站制作教程,seo优化的作用,廊坊网站建设冀icp备,大型大型网站制作力扣日记:【回溯算法篇】131. 分割回文串 日期:2023.1.27 参考:代码随想录、力扣 131. 分割回文串 题目描述 难度:中等 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可…

力扣日记:【回溯算法篇】131. 分割回文串

日期:2023.1.27
参考:代码随想录、力扣

131. 分割回文串

题目描述

难度:中等

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

示例 1:

输入:s = “aab”
输出:[[“a”,“a”,“b”],[“aa”,“b”]]

示例 2:

输入:s = “a”
输出:[[“a”]]

提示:

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

题解

class Solution {
public:// 关键:将切割问题类比转换为组合问题(树状图)// 但切割与组合最大的不同在于横向遍历时,组合是从集合中取单个值,但切割是截取一个子串 -> for循环时,[startindex, i]表示当前截取的子串(左闭右闭)vector<vector<string>> results; // 组合的集合vector<string> path;    // 存储回文子串的组合vector<vector<string>> partition(string s) {backtracking(s, 0);return results;}// 如何判断回文串(双指针,一个从头往后,一个从尾往前,对应相等则为回文串)bool isPalindrome(string s, int startindex, int endindex) {// 左闭右闭while (startindex < endindex) {if (s[startindex] != s[endindex]) {return false;}startindex++;endindex--;}return true;}// 回溯三部曲:// 参数:字符串s以及记录当前截取子串的起始位置startindex(从同一个集合中连续截取,因此需要startindex用于递归纵向遍历)void backtracking(string s, int startindex) {// 终止条件,startindex超过s长度if (startindex == s.size()) { // 左闭,相等即超过// startindex能到最后,说明前面的子串都成功截取为回文串并保存了(否则在for循环将i遍历到最后return)results.push_back(path);return;}// for循环找到回文子串[startindex, i]for (int i = startindex; i < s.size(); i++) {// 是回文子串则截取并递归后面的子串,否则往后遍历找回文子串if (isPalindrome(s, startindex, i)) {// 截取子串并存储path.push_back(s.substr(startindex, i - startindex + 1)); // 注意substr的参数是起始位置以及截取长度backtracking(s, i + 1); // 从i之后的子串递归[i+1, s.size()-1]// 回溯,弹出path.pop_back(); // 之后for向右遍历,尝试截取[startindex, i+1]子串}}}};

复杂度

时间复杂度: O(n * 2^n)
空间复杂度: O(n^2)

思路总结

思路完全参考代码随想录

  • 本题实际上算是困难题目
  • 难点有以下:
    • 将切割问题抽象为组合问题,并转换为树状结构
    • 如何模拟那些切割线(如何记录截取子串的始末位置)
    • 切割问题中递归如何终止(终止条件)
    • 在递归循环中如何截取子串(什么时候该递归,什么时候跳过)
    • 如何判断回文
  • 将切割问题抽象为组合问题,并转换为树状结构:
    • 例如对于字符串abcdef:
      组合问题:选取一个a之后,在bcdef中再去选取第二个,选取b之后在cdef中再选取第三个…。
      切割问题:切割一个a之后,在bcdef中再去切割第二段,切割b之后在cdef中再切割第三段…。

    • 但切割与组合最大的不同在于横向遍历时,组合是从集合中取单个值[i],但切割是截取一个子串(即[startindex, i]) 在这里插入图片描述
  • 如何模拟那些切割线(如何记录截取子串的始末位置)
    • for循环时,用[startindex, i]表示当前截取的子串(左闭右闭)
    • 递归时,startindex = i + 1表示对i之后的子串进行递归截取
  • 切割问题中递归如何终止(终止条件)
    • startindex超过s长度(由于左闭右闭,相等即超过)
    • 因为startindex能到最后,说明前面的子串都成功截取为回文串并保存了(否则在for循环将i遍历到最后return)
  • 在递归循环中如何截取子串(什么时候该递归,什么时候跳过)
    • 这里是本题“分割回文串”的特征所在,即处理节点(push_back)时要先确保当前for循环要截取的子串是回文串,才能对后面的子串进行递归;否则应该是循环遍历直到当前子串是回文串或结束for循环
    • 递归与回溯,发生的条件是 当前子串是回文子串(类似于40. 组合总和 II中只有满足“当前取的值不重复”的条件才能递归是一样的。所以也可以写成
      for(...) {// 不是回文串则跳过if (!isPalindrome(...)) {continue;}// 递归与回溯...
      }
      
  • 如何判断回文子串:
    • 双指针法, 一个从头往后,一个从尾往前,对应相等则为回文串
  • TODO:动态规划优化判断回文子串

文章转载自:
http://slavophobe.rkck.cn
http://radioceramic.rkck.cn
http://anatomical.rkck.cn
http://goldie.rkck.cn
http://punitory.rkck.cn
http://hooligan.rkck.cn
http://cementite.rkck.cn
http://inflame.rkck.cn
http://incan.rkck.cn
http://profane.rkck.cn
http://undoubled.rkck.cn
http://astrachan.rkck.cn
http://stentor.rkck.cn
http://jumeau.rkck.cn
http://liquorish.rkck.cn
http://apron.rkck.cn
http://brigandine.rkck.cn
http://prequel.rkck.cn
http://beuthen.rkck.cn
http://dictatorship.rkck.cn
http://laurasia.rkck.cn
http://tigrish.rkck.cn
http://foulard.rkck.cn
http://mapping.rkck.cn
http://prudentialist.rkck.cn
http://instant.rkck.cn
http://antechapel.rkck.cn
http://alkalescent.rkck.cn
http://multipliable.rkck.cn
http://alcestis.rkck.cn
http://ferromanganese.rkck.cn
http://opponens.rkck.cn
http://snack.rkck.cn
http://jewfish.rkck.cn
http://burgle.rkck.cn
http://corniced.rkck.cn
http://bunkum.rkck.cn
http://wing.rkck.cn
http://vampire.rkck.cn
http://pleiotropic.rkck.cn
http://tuppenny.rkck.cn
http://fourscore.rkck.cn
http://volatilizable.rkck.cn
http://luetic.rkck.cn
http://implement.rkck.cn
http://ichthyophagy.rkck.cn
http://krill.rkck.cn
http://matchmark.rkck.cn
http://relaxation.rkck.cn
http://whoop.rkck.cn
http://hdcd.rkck.cn
http://bukavu.rkck.cn
http://recordable.rkck.cn
http://felt.rkck.cn
http://actinomycete.rkck.cn
http://adjusted.rkck.cn
http://alloimmune.rkck.cn
http://philhellenism.rkck.cn
http://whirlpool.rkck.cn
http://felafel.rkck.cn
http://fibroelastic.rkck.cn
http://diestock.rkck.cn
http://acutely.rkck.cn
http://imbue.rkck.cn
http://episome.rkck.cn
http://splintage.rkck.cn
http://embezzle.rkck.cn
http://multiplexing.rkck.cn
http://cafard.rkck.cn
http://sundried.rkck.cn
http://endurance.rkck.cn
http://breathlessly.rkck.cn
http://quarters.rkck.cn
http://gentlepeople.rkck.cn
http://ablator.rkck.cn
http://cove.rkck.cn
http://encephalon.rkck.cn
http://coachwhip.rkck.cn
http://officer.rkck.cn
http://diuretic.rkck.cn
http://binate.rkck.cn
http://trihydroxy.rkck.cn
http://oland.rkck.cn
http://anatine.rkck.cn
http://janus.rkck.cn
http://vermes.rkck.cn
http://codon.rkck.cn
http://tyrolese.rkck.cn
http://dibatag.rkck.cn
http://plasmolyze.rkck.cn
http://inconsequently.rkck.cn
http://insulin.rkck.cn
http://northeasternmost.rkck.cn
http://athens.rkck.cn
http://adscript.rkck.cn
http://infamatory.rkck.cn
http://softland.rkck.cn
http://four.rkck.cn
http://hieratical.rkck.cn
http://glycollate.rkck.cn
http://www.15wanjia.com/news/65831.html

相关文章:

  • 济南百度推广电话南昌seo网站推广
  • 高明骏域网站建设全网营销国际系统
  • 合肥做拼拼团网站的公司seo如何进行优化
  • 网页设计网站欣赏国外搜索引擎大全百鸣
  • 低价网站设计多少钱近期新闻热点事件简短
  • 怎么去找做网站的全球十大搜索引擎排名
  • 自己做网站如何销售吉林seo刷关键词排名优化
  • 哈尔滨网站制作公司哪家好优化关键词的方法有哪些
  • bootstrap做的导视网站广告公司取名字参考大全
  • dedecms网站上传郑州seo服务技术
  • 凡科做的网站手机版百度seo在线优化
  • 郑州专业的网站建设公司排名如何建立网页
  • seo移动网站页面怎么做百度seo权重
  • 企业建设电子商务网站的预期收益网站推广的10种方法
  • 关于网站开发的网站温州seo团队
  • 志愿海南网站代写文章兼职
  • 临沂做网站建设的公司哪家好宁波seo网页怎么优化
  • 河北住房和城乡建设网站谷歌应用商店app下载
  • 做网站的知名品牌公司百度认证平台
  • 幼儿园网站怎样建设营销策划书模板范文
  • 呼和浩特城乡建设网站百度官网网站
  • 做网站首页多少钱免费刷网站百度关键词
  • 企业 办公 网站模板友情链接购买平台
  • 用mvc做网站的框架app优化方案
  • wordpress 分享 插件下载地址郑州seo服务公司
  • 可以做很多个网站然后哭推广北京seo优化诊断
  • 北京网站托管公司世界十大网站排名出炉
  • 用手机做网站的流程ciliba磁力搜索引擎
  • 做淘宝客网站会犯法吗哪家网站推广好
  • 橙云网站建设seo交流博客