LeetCode 0647 回文子串

2021-10-01 12:49:36 字數 1481 閱讀 5677

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

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

示例 1:

輸入: "abc"

輸出: 3

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

示例 2:

輸入: "aaa"

輸出: 6

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

注意:

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

狀態dp[i][j]表示substring[i, j]是否為回文子串;

狀態轉換

如果substring[i+1, j-1]是回文子串,則dp[i][j] = substring[i, i] == substring[j, j],否則為false,即dp[i][j] = (i + 1 >= j - 1 || d[i + 1][j - 1]) ? chs[i] == chs[j] : false;

class

solution

for(

int i = chs.length -

2; i >=

0; i--)}

return cnt;

}}

合併兩個for迴圈,精簡**如下:

class

solution}}

return cnt;

}}

時間複雜度:o(n

2)

o(n ^ 2)

o(n2);

空間複雜度:o(n

2)

o(n^2)

o(n2)。

中心擴充套件法

class

solution

return cnt;

}// c1 == c2時為單中心

// c1 != c2時為雙中心

private

intcountcenteron

(string s,

int c1,

int c2)

return count;

}}

時間複雜度:o(n

2)

o(n^2)

o(n2);

空間複雜度:o(1

)o(1)

o(1)

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 注意 ...