61、回溯-分割回文串

ops/2024/10/19 5:31:17/

思路: 

还是全排列的思路,列出每一种组合,然后验证是否是回文,如果是子串放入path中,在验证其他元素是否也是回文。代码如下:

class Solution {// 主方法,用于接收一个字符串s并返回所有可能的回文分割方案public List<List<String>> partition(String s) {List<List<String>> ans = new ArrayList<>(); // 存储所有分割方案的结果列表if (s == null || s.isEmpty()) { // 检查输入字符串是否为空return ans; // 如果是空字符串,直接返回空的结果列表}List<String> list = new LinkedList<>(); // 用于临时存储当前探索的分割方案process(s, 0, list, ans); // 从索引0开始递归处理字符串return ans; // 返回所有可能的回文分割方案}// 辅助递归方法,用于探索所有可能的分割方式private void process(String s, int index, List<String> path, List<List<String>> ans) {if (index == s.length()) { // 如果当前索引已经到达字符串末尾ans.add(new LinkedList<>(path)); // 将当前分割方案复制到结果列表中} else {for (int i = index; i < s.length(); i++) { // 遍历所有可能的结束位置if (valid(s, index, i)) { // 检查当前子串是否为回文path.add(s.substring(index, i + 1)); // 如果是回文,则添加到当前路径中process(s, i + 1, path, ans); // 递归处理剩余的字符串path.remove(path.size() - 1); // 回溯,移除最后添加的子串,尝试其他可能的分割}}}}// 判断子串是否为回文的辅助方法private boolean valid(String s, int low, int high) {while (low < high) { // 使用双指针技术从两端向中间检查if (s.charAt(low++) != s.charAt(high--)) { // 如果两端字符不相同return false; // 不是回文}}return true; // 所有对应的字符都相同,是回文}
}


http://www.ppmy.cn/ops/25325.html

相关文章

国内首个图计算平台团体标准发布,创邻科技参与编撰

2024年&#xff0c;由中国通信标准协会批准的团体标准《大数据 图计算平台技术要求与测试方法》&#xff08;编号&#xff1a;T/CCSA 470—2023&#xff09;&#xff08;下称&#xff1a;标准&#xff09;正式实施。该标准于1月4日在全国团体标准信息平台&#xff08;https://w…

牛客NC353 回文子串的数量【中等 字符串,枚举,回文 C++/Java/Go/PHP 高频】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/3e8b48c812864b0eabba0b8b25867738 思路 参考答案C class Solution {public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可*** param str string字符串…

【JavaWeb】Day62.SpringBootWeb案例——基础登录功能

登录功能 需求 在登录界面中&#xff0c;我们可以输入用户的用户名以及密码&#xff0c;然后点击 "登录" 按钮就要请求服务器&#xff0c;服务端判断用户输入的用户名或者密码是否正确。如果正确&#xff0c;则返回成功结果&#xff0c;前端跳转至系统首页面。 接…

思科Cisco2960 交换机 多端口配置VLAN

思科Cisco2960 交换机 多端口配置VLAN cisco2960# cisco2960#conf t Enter configuration commands, one per line. End with CNTL/Z. cisco2960(config)#interface range g0/1-5 cisco2960(config-if-range)#switchport access vlan 199 % Access VLAN does not exist.…

如何替代传统的方式,提高能源企业敏感文件传输的安全性?

能源行业是一个关键的基础设施领域&#xff0c;它涉及能源的勘探、开采、生产、转换、分配和消费。随着全球经济的发展和人口的增长&#xff0c;能源需求持续上升&#xff0c;这对能源行业的可持续发展提出了挑战。能源行业的传输场景多种多样&#xff0c;需要重点关注能源企业…

debian gnome-desktop GUI(图形用户界面)系统

目录 &#x1f31e;更新 &#x1f3a8;安装 &#x1f34e;分配 &#x1f6cb;️重启 &#x1f511;通过VNC连接 debian gnome-desktop &#x1f31e;更新 sudo apt update sudo apt -y upgrade &#x1f3a8;安装 sudo apt -y install task-gnome-desktop 这个过程比…

Qt :浅谈在大型项目中使用信号管理器

一、引言 在大型的Qt项目中,我们往往涉及到很多不同类型的对象之间通信交互,这时候,仍旧采用小项目使用的哪里使用,哪里关联的方法,在复杂的场景下将是无穷无尽的折磨。 下面我们给出一种苦难的场景。 class A: public QObject {Q_OBJECT public:A(QObject *parent = nu…

P9586 「MXOI Round 2」游戏

「MXOI Round 2」游戏 题目描述 小 C 和小 D 正在玩一款蒸蒸日上的游戏。 这款游戏共有 3 3 3 种手牌&#xff1a;杀、闪、斩。他们的用途分别如下&#xff1a; 杀&#xff1a;对对方使用&#xff0c;对方需要使用一张闪&#xff0c;否则对方输掉游戏&#xff1b;或回应对方…