您的位置:首页 > 汽车 > 新车 > 成都旅游住在哪个位置最方便_南宁网站开发价格_社群营销的具体方法_热点事件营销案例

成都旅游住在哪个位置最方便_南宁网站开发价格_社群营销的具体方法_热点事件营销案例

2025/4/19 1:46:28 来源:https://blog.csdn.net/m0_72833525/article/details/147053154  浏览:    关键词:成都旅游住在哪个位置最方便_南宁网站开发价格_社群营销的具体方法_热点事件营销案例
成都旅游住在哪个位置最方便_南宁网站开发价格_社群营销的具体方法_热点事件营销案例

分割回文串

关键点:

  1. 递归如何终止:当startIndex == s.length() (注意没有-1是因为这一步操作不会继续进行)
  2. 在递归循环中如何截取子串:关键在于在每个栈都创建属于自己的StringBuffer(!!!很关键,这样就不会在每次换栈的时候手动删除sb),在自己的基础上append即可。
  3. 如何判断回文:类似数组中的左右指针
  4. !!!只有在字符串判断为回文串时才进行递归
/**end其实是不变,虽然每层循环个数不一样,但是每层循环的其实位置也不一样 */
class Solution {List<List<String>> res = new ArrayList<>();List<String> sub = new ArrayList<>();public List<List<String>> partition(String s) {StringBuffer sb = new StringBuffer();fucPartition(s, 0, sb);return res;}public void fucPartition(String s, int startIndex, StringBuffer sb){ //每个里边有自己的sb// 递归终止条件if(startIndex == s.length() ){res.add(new ArrayList<>(sub));return;}for(int i = startIndex; i < s.length(); i++){//截取字串sb.append(s.charAt(i));// 判断是否位回文串if(isTrue(sb)){sub.add(sb.toString()); // 这个别忘了fucPartition(s, i + 1, new StringBuffer()); //创建新的sbsub.remove(sub.size() - 1);//sub.remove(sub.size() - 1); }else{ //如果不是说明分割方式错误continue; // 不再往下进行}}}//判断字符串是不是回文public boolean isTrue(StringBuffer sb){int left = 0;int right = sb.length() - 1;while(left < right){if(sb.charAt(left) == sb.charAt(right)){left++;right--;}else{return false;}}return true;}
}

写博客的目的是每日督促并记录刷题,也欢迎大家批评指正~(day26)(呜呜隔了好多天了,后边要更加油!!)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com