Time: 20190905
Type: Medium

题目描述

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。

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

示例 1:

输入: “abc”
输出: 3
解释: 三个回文子串: “a”, “b”, “c”.
示例 2:

输入: “aaa”
输出: 6
说明: 6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”.
注意:

输入的字符串长度不会超过1000。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindromic-substrings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

动态规划,定义f[i][j]表示i开始,j结尾的字符串是否为回文串。

在更新数组的过程中计数。

代码

class Solution:def countSubstrings(self, s: str) -> int:# f[i][j]表示以i开始,j结尾的字符串是否为回文串n = len(s)count = 0f = [[False] * n for _ in range(n)]# 注意更新数组的方式for i in range(n-1, -1, -1):for j in range(i, n):if (s[i] == s[j] and j - i <= 2) or (s[i] == s[j] and f[i+1][j-1]):f[i][j] = Truecount += 1return count

注意数组更新的方式

可以看到在计算f[i][j]时,右边依赖于f[i+1][j-1]已经求解,意味着i要从大到小更新,j要从小到大更新。

END.

Leetcode 647.回文子串相关推荐

  1. leetcode - 647. 回文子串

    647. 回文子串 ------------------------------------------ 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串.具有不同开始位置或结束位置的子串, ...

  2. 《leetcode : 647. 回文子串 思考分析双指针解法》

    647. 回文子串 如何确定是回文串: 找中心然后往两边扩散,判断是否对称即可. 在遍历中心点的时候,注意中心点可以是一个元素也可以是两个元素. class Solution {public:int ...

  3. LeetCode 647. 回文子串 (动态规划)

    647. 回文子串 题意: 任意给定一个字符串,计算这个字符串的回文子串个数 解法1(暴力法) 思路: 默认回文子串初始个数为字符串长度 从子串长度为2-母串长度:找出所有的子串startIndex和 ...

  4. Java实现 LeetCode 647 回文子串(暴力)

    647. 回文子串 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串. 示例 1: 输入: "a ...

  5. LeetCode 647. 回文子串(DP/中心扩展)

    文章目录 1. 题目 2. 解题 2.1 动态规划 2.2 中心扩展法 1. 题目 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组 ...

  6. 122. Leetcode 647. 回文子串 (动态规划-子序列问题)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i][j] 表示的是区间范围[i,j] 的子串是否是回文子串 步骤二.推断状态方程: 在确定递推公式时,就要分析如下几种情况. 整体上是两种,就是s[ ...

  7. LeetCode 647 回文子串

    题目链接:力扣 思路:动态规划 dp[i][j]表示s下标[i:j]的子串是否是回文串,问题转化为只要遍历dp数组,统计true的个数 确定边界情况: ●当i=j时,dp[i][i]表示s下标i到i的 ...

  8. 代码随想录补打卡 647 回文子串 516 最长回文子序列

    647 回文子串 代码如下 func countSubstrings(s string) int {    //dp[i][j]数组的含义是i-j这个范围的元素是否为回文串 dp := make([] ...

  9. python回文子串_LeetCode 647. 回文子串 | Python

    647. 回文子串 题目 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串. 示例 1: 输入:" ...

最新文章

  1. 【4】青龙面板系列教程之QQ通知机器人XDD-plus安装
  2. Python 判断字符串是否包含中文
  3. SQL Server 影响dbcc checkdb的 8 种因素
  4. 我写的不只是小说更是程序人生
  5. 为什么有时优盘是只读模式_JS专题之严格模式
  6. 从零开始学Pytorch(十)之循环神经网络基础
  7. 如何查看外网ip地址_如何查看本机ip地址?
  8. 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件
  9. CocoaAsyncSocket
  10. 原创engine中地块的自动编号函数
  11. 计算机软考程序员客观题,历年计算机软考程序员部分选择题真题重点
  12. Comodo 龙浏览器下载
  13. 数字图像处理锐化的原理_数字图像锐化的工作原理以及为什么要使用它
  14. 牵一只蜗牛去散步……
  15. ligerui 用html 来初始化 ligerform
  16. 记事本新建一个html文件,怎样使用记事本建立新文件 怎么在电脑中新建一个记事本 啊?...
  17. 使用 yarn 安装 marked
  18. Flutter开发一个云音乐APP(包含接口地址,亲测可用)
  19. 01_CCC3.0数字钥匙_蓝牙OOB配对过程
  20. 【加拿大签证】加拿大政府指定的签证办理中国体检医院一览【2019官方最新版,加拿大签证体检必看】

热门文章

  1. html 盒子写法,CSS盒子模型
  2. c++中*是什么意思_int在python中什么意思
  3. linux awk拼接字符串,shell awk命令字符串拼接
  4. centos7 安装git_在PHP7.4里配置,源码安装swoole4.x,把swoole用起来
  5. mysql repalication_MYSQL数据库知识点总结
  6. linux arm fpu初始化,ARM处理器的浮点运算单元(FPU)
  7. 缺陷检测算法matlab,MATLAB 基于模板匹配的玻璃瓶口缺陷检测
  8. C Hello World程序
  9. python对象_Python对象()
  10. 熊猫DataFrame apply()示例