描述
給定乙個字串,你的任務是計算這個字串中有多少個回文子串。
具有不同開始位置或結束位置的子串,即使是由相同的字元組成,也會被計為是不同的子串。
示例 1:
輸入: 「abc」示例 2:輸出: 3
解釋: 三個回文子串: 「a」, 「b」, 「c」.
輸入: 「aaa」注意:輸出: 6
說明: 6個回文子串: 「a」, 「a」, 「a」, 「aa」, 「aa」, 「aaa」.
輸入的字串長度不會超過1000。思想
這道題其實和之前的一道最長回文子串很類似,所以dp思想很簡單,這裡就不多說了。
另外忍不住吐槽一下c++,一定要注意在用c++有關長度的內建函式的時候,最好不要直接用,而是重新int乙個變數儲存
因為大部分有關長度的內建函式型別是unsigned,如果直接用有關長度的內建函式直接進行運算 有時候會出現一些意想不到的錯誤
python code
class
solution
:def
countsubstrings
(self, s:
str)
->
int:
dp =[[
0for i in
range
(len
(s))
]for i in
range
(len
(s))
]# 初始化dp陣列
for i in
range
(len
(s))
: dp[i]
[i]=
1# 初始化字串長度為1的
for i in
range
(len
(s)-1)
:# 初始化長度為2的
if s[i]
== s[i +1]
: dp[i]
[i +1]
=1k =
2for i in
range
(len
(s)-2)
:for j in
range
(len
(s)- k)
:if s[j]
== s[j + k]
and dp[j +1]
[j + k -1]
: dp[j]
[j + k]=1
k +=
1 sum =
0for temp in dp:
sum +=
sum(temp)
return sum
c++ codeclass solution
int sum =0;
for(vector<
int> temp: dp)
for(
int figure: temp)
sum +
= figure;
return sum;}}
;
動態規劃 回文子串的長度
給定乙個字串,求其最長的回文子串的長度。如字串 abcdcba 的最長回文子串長度為7,而 aebfcgdhcibja 的最長回文也是 abcdcba 長度也是7.分析 典型的動態規劃問題,用dp i j 記錄字串中從字元 i 到字元 j 中最長回文子串的長度,則 if s.charat i s.c...
力扣 動態規劃
設爬x層的梯子的方法有f x 種,那麼f x f x 1 f x 2 爬1層梯子的方式有一種 爬2層梯子的方式有兩種 爬3層梯子的方式有三種 爬4層梯子的方式有五種 classsolution int rev newint n 1 rev 0 0 rev 1 1 rev 2 2 for inti 3...
動態規劃 回文子串行個數
description 給定乙個字串行,求這個序列中回文子串行的個數。包含多組用例,每個用例為一行字串行 只含有字母和數字,不包含空格,字串長度小於100 輸出該字串行中回文子串行的個數。aaaa aaba 15 10 對於樣例2,有如下回文子串行 為便於觀察,我們另字串行為a1 a2 b a3 a...