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

商洛市住房和城乡建设局网站wordpress植物网站

商洛市住房和城乡建设局网站,wordpress植物网站,app研发费用一般多少钱,互联网广告目录题目思路回溯题目来源 131. 分割回文串 题目思路 切割问题类似组合问题。 例如对于字符串abcdef#xff1a; 组合问题#xff1a;选取一个a之后#xff0c;在bcdef中再去选取第二个#xff0c;选取b之后在cdef中再选取第三个…。切割问题#xff1a;切割一个a之后 组合问题选取一个a之后在bcdef中再去选取第二个选取b之后在cdef中再选取第三个…。切割问题切割一个a之后在bcdef中再去切割第二段切割b之后在cdef中再切割第三段…。 抽象为一棵树形结构 递归用来纵向遍历for循环用来横向遍历切割线就是图中的红线切割到字符串的结尾位置说明找到了一个切割方法。 回溯 1.递归函数参数 全局变量数组path存放切割后回文的子串二维数组result存放结果集。 这两个参数可以放到函数参数里 本题递归函数参数还需要startIndex因为切割过的地方不能重复切割和组合问题也是保持一致的。 ArrayListListString result new ArrayList();ArrayListString path new ArrayList();void backTracking(String s,int startIndex)2.递归函数终止条件 从树形结构的图中可以看出切割线切到了字符串最后面说明找到了一种切割方法此时就是本层递归的终止条件。 那么在代码里什么是切割线呢 在处理组合问题的时候递归参数需要传入startIndex表示下一轮递归遍历的起始位置这个startIndex就是切割线。 终止条件代码如下 if(startIndex s.length()){// 如果起始位置已经大于s的大小说明已经找到了一组分割方案了result.add(new ArrayList(path));return;}3.单层搜索的逻辑 来看看在递归循环中如何截取子串呢 在for (int i startIndex; i s.length(); i)循环中我们 定义了起始位置startIndex那么 [startIndex, i] 就是要截取的子串。 首先判断这个子串是不是回文如果是回文就加入在path中path用来记录切割过的回文子串。 for(int i startIndex;is.length();i){//如果是回文子串则记录if(isPalindrome(s,startIndex,i)){String str s.substring(startIndex,i1);path.add(str);}else{continue;}//起始位置后移保证不重复backTracking(s,i1);path.remove(path.size()-1);}注意切割过的位置不能重复切割所以backtracking(s, i 1); 传入下一层的起始位置为i 1。 判断回文子串 可以使用双指针法一个指针从前向后一个指针从后向前如果前后指针所指向的元素是相等的就是回文字符串了。 private boolean isPalindrome(String s,int start,int end){for(int istart,jend;ij;i,j--){if(s.charAt(i) ! s.charAt(j)){return false;}}return true;}整体代码 class Solution {ArrayListListString result new ArrayList();ArrayListString path new ArrayList();public ListListString partition(String s) {if(s null || s.length() 1){return result;}backTracking(s,0);return result;}public void backTracking(String s,int startIndex){// 如果起始位置已经大于s的大小说明已经找到了一组分割方案了if(startIndex s.length()){result.add(new ArrayList(path));return;}for(int i startIndex;is.length();i){//如果是回文子串则记录if(isPalindrome(s,startIndex,i)){String str s.substring(startIndex,i1);path.add(str);}else{continue;}//起始位置后移保证不重复backTracking(s,i1);path.remove(path.size()-1);}}private boolean isPalindrome(String s,int start,int end){for(int istart,jend;ij;i,j--){if(s.charAt(i) ! s.charAt(j)){return false;}}return true;} }
http://www.sczhlp.com/news/248645/

相关文章:

  • 网站开发建设费用明细网站建设+网络科技公司
  • 怎么做淘宝客优惠券网站一个网站seo做哪些工作内容
  • 黄山新洲建设集团网站二手购物网站建设方案
  • 001做淘宝代码的网站江苏中小企业网站建设
  • 河北农业建设信息网站贵阳建设厅网站
  • 网站建设招聘启事河北网站建设和运营
  • 1222
  • 1837
  • 12233
  • 1272
  • 10/31
  • 设计师灵感网站做网络推广要做网站吗
  • 建站网站加盟北京冬奥会网站制作素材
  • 网站后期维护免费h5游戏制作平台
  • 深圳商城网站设计8免费网站建站
  • 专业做招聘的网站有哪些企业门户网站开发要多少钱
  • 揭阳cms建站模板广州建设局
  • 游戏咨询网站建设目标是什么怎样制作个人网站
  • 哪家网站建设公司比较好国内做的比较好的数据网站
  • 物业网站模板闵行区网站建设
  • 网站推广的基本方法为()江门高端网站建设
  • 开个网站卖机器怎么做捕鱼游戏网站建设步骤
  • 专业做网站较好的公司广州php免费网站源码
  • 孟村县网站建设价格windows10云电脑
  • 网站锚文本与标签开发一个小程序的价格
  • 福鼎市建设局网站wordpress快速发文插件
  • 郑州市建设投资集团公司网站网站单页在线制作
  • 没有做老千的斗牛网站6wordpress与Wix对比
  • 专门做招商的网站是什么意思昆明建站网址
  • thinkphp只能做网站网站 数据库选择