【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个双字符,通过归纳得到左右字符索引,然后不断向两边扩展,不断更新结果。

相关推荐
一 乐4 分钟前
健康管理|基于springboot + vue健康管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·学习
是三好7 分钟前
分布式事务seata
java·分布式·seata
Brduino脑机接口技术答疑16 分钟前
TDCA 算法在 SSVEP 场景中:Padding 的应用对象与工程实践指南
人工智能·python·算法·数据分析·脑机接口·eeg
为什么要做囚徒35 分钟前
多线程基础系列-线程死锁
java·多线程
bluetata40 分钟前
在 Spring Boot 中使用 Amazon Textract 从图像中提取文本
java·spring boot·后端
keep_learning1111 小时前
Z-Image模型架构全解析
人工智能·算法·计算机视觉·大模型·多模态
黎雁·泠崖1 小时前
Java底层探秘入门:从源码到字节码!方法调用的中间形态全解析
java·开发语言
点云SLAM1 小时前
Boost中Graph模块中boost::edge_capacity和boost::edge_capacity_t
数据库·算法·edge·图论·最大团·最大流算法·boost库使用
we1less1 小时前
[audio] AudioTrack (六) 共享内存使用分析
java·开发语言
CYTElena1 小时前
关于JAVA异常的笔记
java·开发语言·笔记·语言基础