leetcode647. 回文子串(动态规划)
生活随笔
收集整理的這篇文章主要介紹了
leetcode647. 回文子串(动态规划)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個字符串,你的任務是計算這個字符串中有多少個回文子串。
具有不同開始位置或結束位置的子串,即使是由相同的字符組成,也會被計為是不同的子串。
示例 1:
輸入: “abc”
輸出: 3
解釋: 三個回文子串: “a”, “b”, “c”.
解題思路
數組含義:dp[i][j]代表字符串s[i…j]是否回文
狀態轉移:當s[i]==s[j]時,如果當前字符串長度是1或者2,則滿足回文條件,或者處于i和j之間的字符串是回文字符串,同樣滿足條件
代碼
class Solution {public int countSubstrings(String s) {int n=s.length(),res=0;boolean[][] dp=new boolean[n][n];for(int i=0;i<n;i++)for(int j=i;j>=0;j--)if(s.charAt(i)==s.charAt(j)&&(i-j<2||dp[i-1][j+1])){dp[i][j]=true;res++;}return res;} }總結
以上是生活随笔為你收集整理的leetcode647. 回文子串(动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到买圆白菜是什么意思
- 下一篇: leetcode96. 不同的二叉搜索树