力扣-647-回文子串
因为单字符也算是回文,所以至少有n个
然后感觉又是二维dp
感觉很像回溯解决排列组合问题
感觉难点在于还要判断是不是回文,虽然可以借助栈,但是每次都压栈弹栈肯定复杂度太大了
之前是不是也做到了什么回文题
我的想法就是要么回溯要么动态规划
这还有提示,中心拓展吗,我好像真才做了这样的题,也用的中心拓展,不过好像没过
嗯,对,力扣-5-最长回文字串
aaa的话就成了排列组合问题
感觉当时写出来也是参考题解而且没能完全理解,明天再做吧
class Solution { public: int num = 0; int countSubstrings(string s) { for (int i = 0; i < s.length(); i++) { count(s, i, i); count(s, i, i + 1); } return num; } void count(string s, int start, int end) { // 传参来说start不会小于0,但是由于双向拓展--,就有可能 while (start >= 0&& end < s.length() && s[start--] == s[end++]) num++; } };
这是评论第一的中心拓展法,可以看到非常简洁优雅
当然也可以写成只有一个方法的,但是我还是觉得这样很清晰
而具体的其他解法,比如动态规划、马拉车算法,我觉得可以去重做第5题
本文作者:YaosGHC
本文链接:https://www.cnblogs.com/yaocy/p/16880066.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步