前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >647. 回文子串

647. 回文子串

作者头像
名字是乱打的
发布2022-05-13 08:40:14
1400
发布2022-05-13 08:40:14
举报
文章被收录于专栏:软件工程

一 题目:

二 思路:

动态规划法

  • 状态:dpi 表示字符串s在i,j区间的子串是否是一个回文串。 状态转移方程:当 si == sj && (j - i < 2 || dpi + 1) 时,dpi=true,否则为false 这个状态转移方程是什么意思呢?
  • 当只有一个字符时,比如 a 自然是一个回文串。
  • 当有两个字符时,如果是相等的,比如 aa,也是一个回文串。
  • 当有三个及以上字符时,比如 ababa 这个字符记作串 1,把两边的 a 去掉,也就是 bab 记作串 2,可以看出只要串2是一个回文串,那么左右各多了一个 a 的串 1 必定也是回文串。所以当 si==sj 时,自然要看 dpi+1 是不是一个回文串。

三 代码:

代码语言:javascript
复制
class Solution {
    public int countSubstrings(String s) {
        int len = s.length();
        int res=0;
        //如dp[i][j]存储i~j是否是回文字符串
        boolean [][] dp=new boolean[len][len];

        for (int j = 0; j < len; j++) {
            for (int i = 0; i <= j; i++) {
                if (s.charAt(i)==s.charAt(j)&&(j-i<2||dp[i+1][j-1])){
                    dp[i][j]=true;
                    res++;
                }
            }
        }
        return res;
    }
}

也可以用中心法。这个我之前写过,可以参考参考https://cloud.tencent.com/developer/article/1923972

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 题目:
  • 二 思路:
  • 三 代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档