分割回文串 II LintCode

2021-08-03 20:21:08 字數 801 閱讀 3033

給定乙個字串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...