【LeetCode】647.回文子串

题目

给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。

回文字符串 是正着读和倒过来读一样的字符串。

子字符串 是字符串中的由连续字符组成的一个序列。

具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

示例 1:

复制代码
输入:s = "abc"
输出:3
解释:三个回文子串: "a", "b", "c"

示例 2:

复制代码
输入:s = "aaa"
输出:6
解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"

提示:

  • 1 <= s.length <= 1000
  • s 由小写英文字母组成

解答

源代码

java 复制代码
class Solution {
    public int countSubstrings(String s) {
        int res = 0;

        for (int i = 0; i < 2 * s.length() - 1; i++) {
            int left = i / 2, right = left + i % 2;

            while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
                left--;
                right++;
                res++;
            }
        }

        return res;
    }
}

总结

选取符合回文的字符作为子串中心向外扩展,子串分为两种------单数和双数,单数中心是一个字符,双数中心是两个字符。一个字符串(长度为n)有n个单字符,n-1个双字符,通过归纳得到左右字符索引,然后不断向两边扩展,不断更新结果。

相关推荐
无限的鲜花6 分钟前
协程本质是函数加状态机——零基础深入浅出 C++20 协程
c++·算法·c++20
旖-旎32 分钟前
《LeetCode 64 最小路径和 || LeetCode 174 地下城游戏》
c++·算法·leetcode·动态规划
森林古猿11 小时前
再论斜率优化
c++·学习·算法
万法若空1 小时前
【数学-简单数论】同余中的逆
线性代数·算法
聚美智数1 小时前
黄历查询-运势查询-国际法定节假日查询-API接口介绍
android·java·数据库
凯瑟琳.奥古斯特2 小时前
力扣1009补码解法C++实现
开发语言·c++·算法·leetcode·职场和发展
KaMeidebaby2 小时前
卡梅德生物技术快报|蛋白的叠氮基修饰:实操解析:核酸模板耦合蛋白的叠氮基修饰实现靶蛋白定点共价标记
前端·人工智能·物联网·算法·百度
Yeats_Liao3 小时前
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
java·后端·架构
通信仿真爱好者3 小时前
第【60期】--大规模MIMO系统信号检测算法误码率比较 --matlab完整代码+参考文章
算法·matlab·mimo·信号检测
范什么特西3 小时前
网络代理问题
java·linux·服务器