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

免费主机空间网站网络建设公司不只是

免费主机空间网站,网络建设公司不只是,莱芜贴吧论坛,魅姬直播算法#xff1a; 有很多分割结果#xff0c;按照for循环去做肯定做不来 这个时候就要想到回溯#xff01;那就要画树#xff01; 画树 分割的画树过程其实和组合很像。 例如对于字符串aab#xff1a; 组合问题#xff1a;选取一个a之后#xff0c;在ab中再去选取第… 算法 有很多分割结果按照for循环去做肯定做不来 这个时候就要想到回溯那就要画树 画树 分割的画树过程其实和组合很像。 例如对于字符串aab 组合问题选取一个a之后在ab中再去选取第二个选取a之后b中再选取第三个.....。切割问题切割一个a之后在ab中再去切割第二段切割a之后在b再切割第三段.....。 回溯三部曲 1.确定返回值和参数 返回值void 参数 string s 题目自带的 int startindex 确定每次递归从哪个字符开始切割 2.确定终止条件 切割到字符串最后就是终止 startindex就是切割线 startindex s.length() 并且要收集结果 3.单层递归逻辑 子串怎么表示的 答[startindex, i] i是这样定义的 for (int i startIndex; i s.length(); i) 收集结果 若子串是回文要定义一个新的函数判断子串是否为回文 将子串add入path收集 若不是回文continue跳出该递归 递归 注意切割过的位置不能重复切割所以backtracking(s, i 1); 传入下一层的起始位置为i 1 backtracking (s, i1) 回溯 弹出本次已经添加的子串 path.removeLast() 判断回文子串 最后我们看一下回文子串要如何判断了判断一个字符串是否是回文。 可以使用双指针法一个指针从前向后一个指针从后向前如果前后指针所指向的元素是相等的就是回文字符串了。 调试过程 第一次调试 class Solution {//全局变量path和resultListListString result new LinkedList();ListString path new LinkedList();public ListListString partition(String s) {backtracking (s, 0);return result;}void backtracking (String s, int startindex){//终止条件收集结果if (startindex s.length()){result.add(new LinkedList (path));return;}//单层递归逻辑//判断子串是否为回文if (isplalindrome (s, startindex, i)){//若是加入pathpath.add (s[startindex, i]);}else {continue;}//递归backtracking (s, i1);//回溯path.removeLast();}//判断回文plalindrome,左闭右闭boolean isplalindrome (String s, int start, int end){//双指针法for (int i, int j; i s.length(), j i; i, j--){if (s[i] s[j]) return true;return false;}} } 原因 1.path.add (s[startindex, i]); 这一行存在语法错误。想要将子串添加到 path 列表中。为了修正这个问题应该使用 substring 方法而不是方括号。修正后的代码应该是path.add(s.substring(startIndex, i 1)); 在Java中方括号主要用于数组的索引访问而不用于提取子串方括号是适用于python的java不能用。 对于字符串提取子串可以使用substring方法该方法接受起始索引和结束索引作为参数以提取指定范围内的子串。[左闭右开 String str Hello, World!; String sub str.substring(startIndex, endIndex); 在这里str是要提取子串的字符串startIndex是子串的起始索引endIndex是子串的结束索引不包括在内。提取的子串将包括从startIndex到endIndex-1的字符。 因此在您的代码中path.add(s.substring(startIndex, i 1));将会提取s字符串中从startIndex到i包括i的子串并将其添加到path列表中。 2.isPalindrome 方法中的for循环存在几个语法错误。看起来您想要在for循环中声明和初始化多个变量但是语法是不正确的。让我们进行以下更正 for (int i start, j end; i j; i, j--) { // ... (代码的其余部分) } 在 Java 中当在 for 循环中声明多个变量时不需要在每个变量前都加上 int。 在 for 循环的初始化部分只需要在第一个变量声明前加上类型而后续的变量声明则只需要写变量名和初始值即可。 修改后 原因单层递归时忘记加for循环了 第二次调试 原因 string不能用方括号 应改为 s.charAt(i) s.charAt(j) 第三次调试 原因把字符串本身也输出了。 主要问题在判断回文的逻辑上 判断是否为xxx一定要先判错有错即错 当发现不是回文就要立刻false有不对的就不往下遍历了。一旦我们找到了一个不同的字符对我们就可以确定这个字符串不是回文因此可以立即返回 false。这样可以提前结束检查因为一旦发现不匹配就不需要继续向后检查。 我原来判断的是先判断前后是否相等若相等则true。 假设字符串是 “abca”。如果我们在检查第一个和最后一个字符相等时就提前返回 true那么我们会错误地认为 “abca” 是一个回文字符串因为我们没有检查中间的字符。而且当我们找到不同的字符时就无法及时结束检查而需要继续检查下去这会降低算法的效率。 正确代码 class Solution {//全局变量path和resultListListString result new LinkedList();ListString path new LinkedList();public ListListString partition(String s) {backtracking (s, 0);return result;}void backtracking (String s, int startindex){//终止条件收集结果if (startindex s.length()){result.add(new LinkedList (path));return;}//单层递归逻辑//判断子串是否为回文for (int istartindex; is.length();i){ if (isplalindrome (s, startindex, i)){//若是加入pathpath.add(s.substring(startindex, i1));}else {continue;}//递归backtracking (s, i1);//回溯path.removeLast();}}//判断回文plalindrome,左闭右闭boolean isplalindrome (String s, int start, int end){//双指针法for (int istart, jend; j i; i, j--){if (s.charAt(i) ! s.charAt(j)) return false; }return true;} } 时间空间复杂度
http://www.hkea.cn/news/14593372/

相关文章:

  • 有什么做衣服的网站七台河新闻直播
  • 网站建设中图片是什么上海网络推广产品
  • 七星彩网投网站建设河北邢台房价
  • 免费开源网站系统邯郸哪里做网站
  • 广告公司网站建设的定位学校网站开发与实现的解决思路
  • 如何在服务器上发布网站关于网站建设的电话销售话术
  • ppt做视频模板下载网站wordpress链接微博
  • seo网站优化工具大全基础网站建设代码
  • 学手机网站建设html5商城网站开发
  • 维护网站费用怎么做会计凭证公司推广做哪个网站吗
  • 怎么建设免费网站域名哪里有竞价推广托管
  • 上海千途网站建设移动应用开发专业学什么
  • 企业网站推广渠道营销公关
  • 网站开发项目架构柳州公司网站制作公司
  • 杭州论坛网站建设海淀周边网站建设
  • 免费软文网站中企动力公司待遇怎么样
  • 做网站一般用什么服务器wordpress返回404
  • 网络推广SEO优化网站建设什么网站立刻买东西
  • 网站建设淘宝店铺模板智慧团建学生登录入口官网
  • 西安百度推广网站建设北京到广州飞机
  • 适合做外链的网站安卓优化大师下载
  • 网站建设专员工作总结seo关键词排名优化如何
  • WordPress和微信小程序网站建设1993seo
  • 邯郸移动网站制作厦门集美建设局网站
  • 做网站注意事项适合ps做图的素材网站有哪些
  • 开网店要建网站平台吗英文书 影印版 网站开发
  • 学校网站开发系统的背景做网站多少钱啊
  • ps中怎样做网站轮播图片网站域名怎么快速备案价格
  • 成都php网站开发做网站备案都需要什么东西
  • 网站设计网络推广浙江省城乡建设监方网站