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

回溯法---分割回文串

题目:给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。

思路:

第一步:确定参数与返回值。参数为字符串s,分割起始下标startIndex,无返回值

第二步:确定终止条件。当startIndex>=s.length(),说明找到了一组分割方案,将其加入结果集

第三步:确定单层递归逻辑。for循环遍历s字符串,从startIndex到s.length()-1。如果[startIndex,i]的区间下标组成的字符串是回文串,则将该字符串加入path,否则跳过本轮循环。接着递归,回溯

代码:

    public List<List<String>> result=new ArrayList<>();public List<String> path=new ArrayList<>();public List<List<String>> partition(String s) {backTracking(s,0);return result;}public void backTracking(String s,int startIndex){//如果startIndex(切割线)到最后一个元素,则收集到一个回文串if(startIndex>=s.length()){result.add(new ArrayList(path));return;}for(int i=startIndex;i<s.length();i++){//如果是回文串,则记录if(isPalindrome(s,startIndex,i)){String str=s.substring(startIndex,i+1);path.add(str);}elsecontinue;//递归回溯backTracking(s,i+1);path.remove(path.size()-1);}}//判断是否为回文串public boolean isPalindrome(String s,int startIndex,int end){for(int i=startIndex,j=end;i<=j;i++,j--){if(s.charAt(i)!=s.charAt(j))return false;}return true;}

http://www.lryc.cn/news/411777.html

相关文章:

  • DDR等长,到底长度差多少叫等长?
  • 程序员面试题------N皇后问题算法实现
  • 【C++学习】6、继承
  • 从零开始的MicroPython(三) 按键与外部中断
  • Windows下编译安装Kratos
  • 汽车-腾讯2023笔试(codefun2000)
  • 软测面试二十问(最新面试)
  • 风吸杀虫灯采用新型技术 无公害诱虫捕虫
  • 随手记录第十二话 -- JDK8-21版本的新增特性记录(Lambda,var,switch,instanceof,record,virtual虚拟线程等)
  • SpringCloud网关 SpringBoot服务 HTTP/HTTPS路由/监听双支持
  • JavaScript做网页是否过期的处理
  • python coding时遇到的问题
  • 攻防演练号角吹响,聚铭铭察高级威胁检测系统助您零失分打赢重保攻坚战
  • 个人量化交易兴起!有什么好用的量化软件推荐?迅投QMT量化平台简介!
  • SQL labs-SQL注入(七,sqlmap对于post传参方式的注入,2)
  • SAM 2: Segment Anything in Images and Videos
  • 软件测试面试,如何自我介绍?
  • 力扣第四十七题——全排列II
  • Springer旗下中科院2区TOP,国人优势大!
  • 【C++】C++入门知识详解(下)
  • 分压电阻方式的ADC电压校准
  • 使用Postman测试API短轮询机制:深入指南
  • 明清进士人数数据
  • C# 串口通信(通过serialPort控件发送及接收数据)
  • 数据安全的新盾牌:SQL Server数据库镜像技术详解
  • 【C语言版】数据结构教程(一)绪论(上)
  • 酒后为什么总感觉渴?
  • Docker安装OwnCloud私有云盘对接ceph
  • 创建了Vue项目,需要导入什么插件以及怎么导入
  • abstract 关键字