力扣-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题