2022-11-11 11:41阅读: 24评论: 0推荐: 0

力扣-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 中国大陆许可协议进行许可。

posted @   YaosGHC  阅读(24)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起