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

代发新闻稿的网站wordpress.

代发新闻稿的网站,wordpress.,wordpress 转小程序,wordpress 产品目录Leetcode131:分割回文串——回溯算法 给一个字符串aab, 如何分割,使得子串 都是回文串,返回所有的分割方案。 答:1、aa,b。 2、a,a, b. 重点,想想树怎么画的。 发现:所有…

Leetcode131:分割回文串——回溯算法

在这里插入图片描述

给一个字符串aab, 如何分割,使得子串 都是回文串,返回所有的分割方案。 答:1、aa,b。 2、a,a, b.

重点,想想树怎么画的。

在这里插入图片描述

发现:所有分割方案都在叶子节点上。

path,收集路径的过程,就是找叶子节点过程。

result,把符合的分割子串方案放到result二维数组中。

回溯三部曲:1、函数的参数返回值。2、边界条件。3、单层搜索逻辑。

需要考虑情况的重点1:如何做这个切割符呢?答案startIndex就是分割的线。

边界条件是什么?

如果切割startindex到最后了,说明分割结束,可以处理叶子节点了。这就是边界

即if(startindex == s.size) 放进结果。return;

这里为什么把所有叶子节点都放回result了。不应该把符合回文要求的path 放回result吗。答案:把判断是否是回文串的逻辑,放入到第3步里面的for循环了。用一个函数isPalindrome()判断。

//判断回文的函数,实现简单。已经知道了起始startindex,终止位置i,那么两边一起向中间搜索,如果所便利的子串都相等的话,那就是回文串了。

重点2:叶子节点里面的切割,如何用代码表示呢?

答:(startindex,i ] 左开右边。

Void backtracking(s,startindex){//边界//for循环,递归for(i=startindex; i<s.size(); i++){if(  isPalindrome(s, startindex, i ) ){若是回文,则区间加入path。path.(子串)}else    continue;//continue相当于剪枝了//递归逻辑,切割过的地方不能重复切割,所以要i+1backtracking(s, i+1);//回溯过程,回溯就是沿着另外一条树的树干走,没有回溯的话就会一直沿一条树走到底path.pop_back(i);    //把下边为i的元素删除。}return;
}

pop_back(),不需要参数传递,删除容器内的最后一个元素,(其实c++底层不是删除最后一个元素,而是取消了最后一个元素的地址映射,用户看起来打印时候,最后一个元素没了)

下面具体实现的代码,记录了我实现过程,以及犯错误和原因解释 也以注释形式写到代码里了、

class Solution {
public:vector<vector<string>> result;vector<string>  path;bool isPalindrome(const string& s, int left, int right){while( left < right ){if( s[left] != s[right] ){return false;}left++;right--;}return true;}//回溯算法,三部曲,1、函数返回值和参数。2、边界条件。3、单层搜索逻辑。void backtracking(const string& s, int startIndex){//边界条件if(startIndex >= s.size())  {result.push_back(path);return;}//单层for搜索,for(int i = startIndex; i < s.size(); i++){//错误记录,不能传入参数path,应该传入s,path传入的一定时回文的,s是用来判断的if( isPalindrome(s, startIndex, i) ){//是回文串,则加入path中,错误1,不能加入i,i是整形,path是string,报错。//所以必须用s.substr(),函数,根据起始startindex,终止index位置,变成string类型path.push_back(s.substr(startIndex, i - startIndex + 1));}else{continue;}//递归backtracking(s, i+1);//回溯,path.pop_back 不需要参数。path.pop_back();}return;}vector<vector<string>> partition(string s) {backtracking(s, 0);return result;}
};
疑问:为什么上述2个函数,要吧string s 设置为const, 为什么要加上&符号,必须要加吗?

使用 const 关键字

原因

  • 保证数据的只读性:当参数被声明为 const 时,这表明在函数内部不会对传入的对象进行修改。在 isPalindromebacktracking 函数里,只是读取字符串 s 的内容,不会对其进行修改,所以把参数声明为 const 可以保证数据的只读性,防止在函数内部意外修改了字符串的内容。
  • 增强代码的可读性和可维护性:const 关键字能够向其他开发者传达函数的使用意图,即该函数不会对传入的参数进行修改,这有助于提高代码的可读性和可维护性。

不使用 const 的影响

若不使用 const,虽然代码依然可以正常运行,但可能会在函数内部意外修改字符串的内容,从而引发难以调试的错误。并且,其他开发者在阅读代码时,无法明确该函数是否会修改传入的参数。

  1. 使用引用(&

原因

  • 避免不必要的拷贝:在 C++ 里,当把对象作为参数传递给函数时,默认采用值传递的方式,这意味着会对对象进行一次拷贝。对于 std::string 类型的对象,尤其是当字符串很长时,拷贝操作会消耗大量的时间和内存。使用引用传递(&)可以避免这种不必要的拷贝,直接传递对象的引用,从而提高代码的性能。
  • 提高效率:引用传递只需要传递对象的地址,而不需要复制整个对象,这样可以显著减少内存开销和时间开销。

文章转载自:

http://7lqEvGJd.xmjzn.cn
http://6ACJ25Kn.xmjzn.cn
http://dhrBQUWN.xmjzn.cn
http://p0kNhJjB.xmjzn.cn
http://46THBNfl.xmjzn.cn
http://mSDCDcpT.xmjzn.cn
http://Ph2i9Avb.xmjzn.cn
http://4cYtYinb.xmjzn.cn
http://mKxJfkJl.xmjzn.cn
http://VgSP7c2q.xmjzn.cn
http://GRFisKiU.xmjzn.cn
http://ZqAH9nUK.xmjzn.cn
http://wo7l2CtK.xmjzn.cn
http://18kKarDd.xmjzn.cn
http://DHALm6aW.xmjzn.cn
http://Q6MTkjpF.xmjzn.cn
http://6yHIEor5.xmjzn.cn
http://ADV8Rsid.xmjzn.cn
http://jqF1BvIl.xmjzn.cn
http://rz7twRLN.xmjzn.cn
http://oXB075wO.xmjzn.cn
http://XBacezDS.xmjzn.cn
http://por8Eqlw.xmjzn.cn
http://gWvDIJly.xmjzn.cn
http://NEUSdIRq.xmjzn.cn
http://lg1sNdgf.xmjzn.cn
http://i2zd17lX.xmjzn.cn
http://8Dexgcst.xmjzn.cn
http://KuMILQbn.xmjzn.cn
http://FVWRApIG.xmjzn.cn
http://www.dtcms.com/wzjs/721247.html

相关文章:

  • linux下网站建设如何招聘软件网站开发人员
  • 优速网站建设免费高清图片素材网站有哪些
  • 内销常用网站.net可以做网站做游戏 博客园
  • 基层建设期刊网站wordpress 点击加载
  • 猎聘网招聘官方网站国际婚恋网站做翻译合法吗
  • 网站怎么做免费做网站的过程
  • 5昌平区网站建设怎么找app开发公司
  • 网站创建流程企业建设网站注意点
  • 陕西华伟建设有限公司网站广东手机微信网站制作
  • 自己做网站买宁波做网站的
  • vs2013做的网站品牌网站建设 1蝌蚪小
  • 网站模板怎样使用长泰微新闻
  • 安徽教育机构网站建设途牛网站建设的特点
  • 为什么做网站越早越好网站 改版
  • 商业网站建站wordpress cad插件大全
  • 北京高端建站公司企业展示厅设计效果图
  • 网站底部版权信息格式携程网站建设
  • 山西集团网站建设实验室网站建设
  • 做财经直播网站做PS的赚钱的网站
  • 企业网站数据库设计表青州市住房和城乡建设局网站
  • 自己创网站购物网站设计欣赏
  • 武进网站建设怎么样深圳最好的网站制作哪家公司好
  • 定制网站本地企业那非西
  • 开一家做网站的公司百度搜索工具
  • 赤峰建设银行网站如何用php制作网页
  • 哪个网站做视频钱多360站长工具
  • 网站建设的工期拖延如何解决网站套餐方案
  • 分析网站建设外链代发
  • 建设外贸英文网站四川重庆是哪个省
  • 网络科技官网逆冬黑帽seo培训