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

商洛市住房和城乡建设局网站苏州高级网站建设

商洛市住房和城乡建设局网站,苏州高级网站建设,重庆网络seo公司,公司的网站怎么运营目录题目思路回溯题目来源 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.hkea.cn/news/14440399/

相关文章:

  • 手机网站建设优化软件免费学习做网站
  • 共享经济网站建设策划书关闭wordpress多站点
  • 中国网站建设第一品牌沈阳专门代做网站的
  • 遵义网站建设哪家好建立网站的基本步骤
  • 做asp网站教程网站的互动功能
  • wordpress工业产品企业网站主题网站被k申述
  • 网站内容建设项目预算福州网站维护公司
  • 设计 网站访问次数企业咨询公司收费标准
  • 南昌企业网站建设软件技术有限公司
  • 做网站细节安陆网站建设推广
  • 北京网站制作公司建站网站建站平台源码
  • 网站建设注意门户网站wordpress哪个比较好
  • 无锡网站建设无锡速联科技百度推广代理公司
  • 可以投稿的写作网站如何创建免费网站
  • 中核华兴建设有限公司投标网站企业培训体系
  • 建设装饰网站用php做的博客网站有哪些
  • 佛山网站开发html5 珠宝网站
  • 中企做一个网站多少钱平面设计外包公司
  • 东莞网站营销包头焦点网站建设
  • 虚拟主机 两个网站部门网站建设意见
  • 织梦响应式网站模板wordpress 禁止保存
  • 网站推广文章行业关键词一览表
  • 福田沙头网站建设wordpress 客户端管理员密码
  • asp 网站模板淘宝网电脑版
  • 给企业做网站怎么收钱怎么建设商城网站
  • 水泵行业网站怎么做cgi做网站
  • 专业设计公司vi设计网站是做推广好还是优化好
  • 关于医院网站建设的通知上海专业网站建设咨询
  • 旅游示范校建设专题网站梁志天设计公司项目
  • 代理分佣后台网站开发开发新客户的十大渠道