回文串分割

2021-10-01 16:02:17 字數 786 閱讀 3649

問題描述

給定乙個字串s, 分割s使得分割出的每乙個子串都是回文串.

計算將字串s分割成回文分割結果的最小切割數

例如: 給定字串 s = 「aab」;

返回 1. 因為回文分割結果[「aa」, 「b」]是切割一次生成的

回文串就是指正著讀和反著讀都一樣的字串, 比如 「level」

用f(i)表示到第 i 個字元需要的最小分割數

給定乙個 j < i, 如果此時從 j + 1 到 i 是乙個回文串, 並且假定我們已經知道從第 1 個字元到 第 j 個字元的最小切割數,那麼我們就可以找到這個狀態遞推公式

也就是 f(i) = min(f(i), f(j) + 1)

此時能保證從第 1 個字元到第 j 個字元是回文串

從j + 1到 i 也是回文串

並且1到 j 也就是到第 j 個字元的最小切割數已知,則f(i) = f(j) + 1;

由於 i 個字元的最大切割次數為 i - 1,初始化的時候直接使用f(i) = i - 1即可

**如下:

class solution 

for (int i = 1; i < len + 1; ++i)

}} return v[len];

} //判斷回文串的函式

bool ispalindrome(string s, int i, int j)

i++;

j--;

} return true;

}};

分割回文串

給定字串s,需要將它分割成一些子串,使得每個子串都是回文串.返回所有可能的分割方案.樣例 1 輸入 a 輸出 a 解釋 字串裡只有乙個字元,也就只有一種分割方式 就是它本身 樣例 2 輸入 aab 輸出 aa b a a b 解釋 有兩種分割的方式.1.將 aab 分割成 aa 和 b 它們都是回文...

分割回文串

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b 思路 回溯演算法,採用遞迴實現 c 版本 class solution for int index 1 index b a 1 index vector pa...

分割回文串

問題描述 給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案的數量。示例 輸入 aab 輸出 2 說明 可能的分割方案有 aa b a a b 輸入說明 輸入乙個字串 s,長度小於等於200.輸出說明 輸出乙個整數 輸入範例 aab輸出範例 2 includ...