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

posted @ 2022-11-11 11:41  YaosGHC  阅读(29)  评论(0)    收藏  举报