Leetcode之动态规划(DP)专题-647. 回文子串(Palindromic Substrings)


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

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

示例 1:

输入: "abc"
输出: 3
解释: 三个回文子串: "a", "b", "c".

示例 2:

输入: "aaa"
输出: 6
说明: 6个回文子串: "a", "a", "a", "aa", "aa", "aaa".

注意:

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

dp:

定义:dp[i][j]表示在从i开始到j结束这段字符串里,如果是回文串,则dp[i][j]=1,不是则dp[i][j]=0;

状态转移方程:

if((s.charAt(i)==s.charAt(j)) && ((j-i<=2) || dp[i+1][j-1]==1)){
  dp[i][j] = 1;
}

举例解释:

"aba"

i=2 j=2    "a" 长度为1,是回文字符串。

i=1 j=1    "b" 长度为1,是回文字符串

i=1 j=2    "ab" 长度为2,但左不等于右,不是

i=0 j=0    "a" 长度为1,是回文字符串

i=0 j=1    "ab" 长度为2,且左不等于右,不是

i=0 j=2    "aba" 长度为3,且左等于右,是

        (只要长度为3,且左等于右,不管中间是什么,都是回文字符串)

再举一种情况  "abba"

i=0 j=3 截取后为"abba" 左等于右,但长度大于3,接着判断dp[i+1][j-1]是不是1,即判断dp[1][2],即字符串"bb"是不是回文串。

class Solution {
public int countSubstrings(String s) {
int res = 0;
int n = s.length();
int[][] dp = new int[n][n];
for (int i = n-1; i >= 0; i--) {
for (int j = i; j < n; j++) {
if((s.charAt(i)==s.charAt(j)) && ((j-i<=2) || dp[i+1][j-1]==1)){
dp[i][j] = 1;
res++;
}
}
}
return res;
}
}

最新文章

  1. UDPClient的用法
  2. C#编程语言与面向对象—— 多态
  3. .net加密解密
  4. Python学习(17)异常处理
  5. 几种C#实现播放声音的方法
  6. java中计时器的用法Timer和TimerTask的用法__java中利用Timer与TImerTask 计时器间隔执行任务
  7. c语言学习之基础知识点介绍(十):数组
  8. sphinx,github和readthedocs配合使用
  9. MySQL查看修改存储引擎总结
  10. eclipse中配置spring环境
  11. UIkit复习:UIContorl及子控件的剖析
  12. C语言中__attribute__ ((at())绝对定位的应用
  13. Linux系统启动那些事—基于Linux 3.10内核【转】
  14. nlp底层技术列举
  15. java基础-反射(细节)
  16. 免费ARP
  17. NET设计模式 第二部分 结构性模式(11):外观模式(Fa&#231;ade Pattern)
  18. (https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014550004)Topic: Caught java.io.CharConversionException. ERRORCODE=-4220, SQLSTATE=null
  19. 【DeepLearning】汉字手写体识别
  20. goalng nil interface浅析

热门文章

  1. stm32中阻塞模式和非阻塞模式 in blocking mode 与 in non-blocking mode区别
  2. CF662C Binary Table (FWT板题)
  3. SpringBoot+JTA+Mybatis
  4. 费马小定理 x
  5. CF55D Beautiful numbers (数位dp)
  6. Doki Doki Literature Club ZOJ - 4035
  7. 手写alert弹框(一)
  8. RAD,Eclipse切換界面語言(中日英)
  9. New in Python 3.8.0
  10. 微信小程序倒计时的方法