力扣|0647.PalindromicSubstrings【中篇】【Python】【中心扩展】【动态编程】问题LeetCode给定一个字符串,你的任务是统计这个字符串中有多少个回文子串。起始索引或结束索引不同的子串算作不同的子串,即使它们由相同的字符组成。示例1:输入:“abc”输出:3解释:三个回文字符串:“a”、“b”、“c”。示例2:输入:“aaa”输出:6解释:六个回文字符串:"a","a","a","aa","aa","aaa"。注意:输入的字符串长度不会超过1000。题目给定一个字符串,你的任务是计算有多少个回文子串在这个字符串中。具有不同开始或结束位置的子串,即使它们由相同的字符组成,也被认为是不同的子串。示例1:输入:"abc"输出:3解释:三个回文子串:"a"、"b"、"c"示例2:输入:"aaa"输出:6解释:6个回文子串:"a"、"a","a","aa","aa","aaa"提示:输入字符串的长度不会超过1000。思路解决方案一:中心展开枚举每一个可能的回文中心,双指针分别向两边展开,如果指针指向同一个元素则继续扩展。因为要考虑回文的长度是奇数还是偶数,为了降低时间复杂度,我们选择用循环来解决。例子n=4:第i个回文中心左起始位置li回文中心右起始位置ri000101211312422523633经过分析,一个长度为n的字符串会生成2n-1组回文中心[li,ri],其中li=i/2,ri=li+(imod2).所有的回文中心都是通过简单地遍历0到2n-2找到的。时间复杂度:O(n^2)Python3codeclass解决方案:defcountSubstrings(self,s:str)->int:#解决方案一:中心展开n=len(s)ans=0foriinrange(2*n-1):left,right=int(i/2),int(i/2)+i%2whileleft>=0andright
