2道寻找回文子串的题目

news/2025/3/15 1:07:30/文章来源:https://www.cnblogs.com/XTG111/p/18235214

题目

题目1

题目2
image

题目1是将字符串分隔,使得分隔后得到的每个字符串都是回文子串
题目2是从字符串里面找到回文子串
两道题都可以利用递归来解决

//利用双指针判断是否是回文子串
bool isre(string& s)
{int left = 0;int right - s.size()-1;while(left <= right){if(s[left]!=s[right]) return false;}return true;
}

题目1解法

除了递归还需要使用回溯,即采用深度搜索,将一次寻找结束后,将倒退,修改分割方法继续寻找匹配

//两个数组,一个存储最终结果,一个存储一次遍历的结果
vector<vector<string>> res;
vector<string> path;//k是每次搜索的起始位置
void getRes(string& s,int k)
{//当起始位置到达末尾,将path结果添加到res数组中if(k == s.size()) {res.push_back(res);return;}//从第K个位置开始计算字符串for(int i = k;i<s.size();i++){string check = s.substr(k,i-k+1);if(isre(check)){path.push_back(check);//对之后的字符串进行分割getRes(s,i+1);//这轮字符串搜索完之后,回溯path.pop_back();}}
}

题目2

需要注意的就是处理重复的情况,比如一个字符串全是a的情况。
当寻找到一个回文子串就可以将其添加到结果数组中

vector<string> res;
unordered_set<string> path; // 用来避免重复void getRes(string& s, int k)
{if(k == s.size()) return; //遍历完字符串,说明寻找完了for(int i = k;i<s.size();i++){string check = s.substr(k,i-k+1);if(isre(check) && path.find(check) == path.end()){res.push_back(check);path.emplace(check);//从k+1开始搜索下一个回文子串getRes(s,k+1);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/720970.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BUG:驱动新屏幕,屏幕左右无法居中

1.BUG描述 RGB屏幕的显示左右无法居中 2.BUG原因 因为屏幕参考值的前肩距和后肩距(Hfp、Hbp)的type值远远超出了芯片的限制(32、128)。所以造成左右偏移无法调节。3.修复方法 最后将屏幕的SYNC模式,硬件重新接线改为DE模式。使得前间距和后间距不再有效。4.补充 4.1 参数的计算…

密码工程-小素数

任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,使用git管理过程,至少提交三次参考《密码工程》p107伪代码基于Eratosthenes算法实现 int SmallPrimeList(int n, int *plist, int *len), 其中plist返回素数列表,len返回列表长度(5’)写出测试代码,至…

文献收获_2024.06.06

Ahmed, Syed Rakin. 2024. Generating Clinically Translatable AI Models for Cancer Diagnostics. Doctoral dissertation, Harvard University Graduate School of Arts and Sciences. 来源:https://nrs.harvard.edu/URN-3:HUL.INSTREPOS:37378697FIGURE 4 Model Zoo这部分…

高德面试:为什么Map不能插入null?

在 Java 中,Map 是属于 java.util 包下的一个接口(interface),所以说“为什么 Map 不能插入 null?”这个问题本身问的不严谨。Map 部分类关系图如下:所以,这里面试官其实想问的是:为什么 ConcurrentHashMap 不能插入 null? 1.HashMap和ConcurrentHashMap的区别 HashMa…

修改k8s pod的hosts文件

当我们服务需要使用自定义的域名解析时,就需要修改pod内hosts文件。 而如果我们在pod内部修改后,下次重启依然会丢,所有下面用两种方式实现持久化修改:1.当集群内所有或者大部分服务都需要修改hosts文件时,我们可以修改CoreDNS的configmap文件kubectl edit cm -n kube-sys…

BOSHIDA AC/DC电源模块:跟踪技术的创新之选

BOSHIDA AC/DC电源模块:跟踪技术的创新之选 AC/DC电源模块是一种能将交流电转化为直流电的设备,广泛应用于各种电子设备中。在过去的几十年中,AC/DC电源模块一直在不断发展和演进,以满足不断进步的科技需求。其中一项创新技术,即跟踪技术,成为AC/DC电源模块设计的首选。 …

Junit4遇上chatGPT

这是一篇适合Java工程师体质的AI开发教程。 本教程会教你写一个简单的junit4的Rule,该Rule在基于junit4的测试方法失败后,自动向GPT发送错误信息并通过GPT分析得出代码修改建议。 首先向AI问好 简单的通过AI,让它基于json格式生成相应的类文件,这样方便我们在代码中使用,而…

『vulnhub系列』HACKABLE-II

『vulnhub系列』HACKABLE-II 下载地址: https://www.vulnhub.com/entry/hackable-ii,711/信息搜集: 使用nmap探测存活主机,发现主机开启了21,22和80端口访问80端口的web服务,发现apache默认页面使用dirsearch进行目录爆破,发现files 目录 dirsearch -u "http://192.1…

电脑局域网内让其他电脑通过IP访问配置

依次点击桌面左下角“开始菜单”>“所有应用”>“Windows系统”>“控制面板”,如图所示 在控制面板界面,选择“查看方式”为“大图标”,然后点击打开window防火墙,如图所示 然后点击“高级设置”,如图所示在高级安全 Windows 防火墙界面,右侧点击Windows 防火墙…

.eslintrc-auto-import.json 自动导入 依赖 入ref reactive 等

.eslintrc-auto-import.json 自动导入 依赖 入ref reactive 等这篇文章比较详细介绍了这个,但是这种全局导入,其实也是酌情处理。 Reference: vite自动按需导入 https://blog.csdn.net/webbirds/article/details/127283504--------------------------------------------- 生…

13.56MHz电动车NFC刷卡解锁方案-SI522 SI512

随着电动车市场的快速发展,车主对车辆的智能化和便捷性的要求也在不断提升。仪表盘作为电动车的重要组成部分,不仅需要提供基本的行驶信息,还需要具备智能交互功能。基于13.56MHz频率的NFC(近场通信)技术为电动车仪表盘的智能化提供了有效解决方案。本文将介绍一种基于13.…

MBR10100FCT-ASEMI肖特基二极管MBR10100FCT

MBR10100FCT-ASEMI肖特基二极管MBR10100FCT编辑:ll MBR10100FCT-ASEMI肖特基二极管MBR10100FCT 型号:MBR10100FCT 品牌:ASEMI 封装:TO-220F 最大平均正向电流(IF):10A 最大循环峰值反向电压(VRRM):100V 最大正向电压(VF):0.80V 工作温度:-65C~175C 反向恢复时间:…