leetcode-647. 回文子串
回文子串是指这个子串正着读反着读读得内容都一样,比如aaa,有以下回文字串a,a,a,aa,,aa,aaa,字符虽然一样但不是同一个字符仍然被看作一个子串
我们可以使用双指针中心扩展法解决这个问题
-
一个字符串中心只能有两个或者一个,如果有3个,那么他已经是一个回文子串了
-
中心的个数怎么算,比如abab这个字符串,从左往右依次数,它的中心有a,ab,b,ba,a,ab,b七个,中心就是可以进行扩展到字符,可以说是两个相邻或者单个字符
-
根据归纳法,我们可以总结出中心的个数 =
2*s.length() - 1
-
左指针:如果此时中心为1个字符,左指针=右指针=中心,如果有两个字符,左指针代表左边那个中心,
left = center / 2
-
right = center % 2 + left
public int countSubstrings(String s) { int res = 0; int length = s.length(); for(int center = 0; center < 2 * length - 1; center++){ int left = center/2; int right = left + center%2; while(left >= 0 && right <= length && s.charAt(left) == s.charAt(right)){ left--; right++; res++; } } return res; }
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律