leetcode647 回文子串

2021-09-14 02:14:39 字數 782 閱讀 4015

這是乙個非常精彩的dp問題:

給定乙個字串,你的任務是計算這個字串中有多少個回文子串。

具有不同開始位置或結束位置的子串,即使是由相同的字元組成,也會被計為是不同的子串。

示例 1:

輸入: 「abc」

輸出: 3

解釋: 三個回文子串: 「a」, 「b」, 「c」.

示例 2:

輸入: 「aaa」

輸出: 6

說明: 6個回文子串: 「a」, 「a」, 「a」, 「aa」, 「aa」, 「aaa」.

注意:輸入的字串長度不會超過1000。

用dp的思想進行分析:

將s轉化為字元數ch

1.我用乙個二維陣列dp來表示回文子串,dp[i][j]表示從位置i到位置j的子串是不是回文子串,如果是dp[i][j]=1,否則dp[i][j]=0.

2.對於dp[i][j],如果ch[i]!=ch[j],顯然dp[i][j]=0,否則dp[i][j]=dp[i+1][j-1]。

3.因為我們要從dp[i+1][j-1]得到dp[i][j],所以我採用這種方式進行遍歷:

時間複雜度o(n);

**:

public int countsubstrings(string s) 

for(i=0;i

for(j=2;j}}

return ans;

}

leetcode647 回文子串

給定乙個字串,你的任務是計算這個字串中有多少個回文子串。具有不同開始位置或結束位置的子串,即使是由相同的字元組成,也會被計為是不同的子串。示例 輸入 aaaba 輸出 9 解釋 a aa a aa aaa a b aba a 奇回文 如 aba 和偶回文 如abba 歸一化處理 i 0123 47s...

leetcode 647 回文子串

給定乙個字串,你的任務是計算這個字串中有多少個回文子串。具有不同開始位置或結束位置的子串,即使是由相同的字元組成,也會被計為是不同的子串。示例 1 輸入 abc 輸出 3 解釋 三個回文子串 a b c 示例 2 輸入 aaa 輸出 6 說明 6個回文子串 a a a aa aa aaa 注意 輸入...

LeetCode 647 回文子串

題目鏈結 題目描述 給定乙個字串,你的任務是計算這個字串中有多少個回文子串。具有不同開始位置或結束位置的子串,即使是由相同的字元組成,也會被計為是不同的子串。示例輸入 abc 輸出 3 解釋 三個回文子串 a b c 輸入 aaa 輸出 6 說明 6個回文子串 a a a aa aa aaa 注意 ...