給定乙個字串s,將s分割成一些子串,使每個子串都是回文。
返回s符合要求的的最少分割次數。
樣例 比如,給出字串s = 「aab」,
返回 1, 因為進行一次分割可以將字串s分割成[「aa」,」b」]這樣兩個回文子串
思想:動態規劃
令len 字串的長度,並開闢新的陣列nums[len],其中nums[i]表示從0到位置i表示的字串,它的最小切割數。初始化val[i]=i,表示最壞情況下字串的切割次數就是每個字元都切一次。
開闢二維矩陣dp[len][len],如果dp[i][j]=true,則字串sub(i,j)滿足回文字串的條件。下面對dp[i][j]是否滿足條件進行判斷:
如果dp[i+1][j-1]==true && s[i]==s[j] (表示字串sub(i,j)是回文字串)
或者 j=i+12 && s[i]==s[j] 此時 dp[i][j]=true;
#ifndef c108_h
#define c108_h
#include
#include
#include
using
namespace
std;
class solution
}//若s[j,i]是回文串,則切割數為nums[j-1]+1
for (int i = 1; i < len; ++i)}}
return nums[len - 1];
}int minval(int a, int b)
};#endif
分割回文串
給定字串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...