分割回文串 III

2021-10-14 04:57:31 字數 1073 閱讀 3275

給你乙個由小寫字母組成的字串 s,和乙個整數 k。

請你按下面的要求分割字串:

首先,你可以將 s 中的部分字元修改為其他的小寫英文本母。

接著,你需要把 s 分割成 k 個非空且不相交的子串,並且每個子串都是回文串。

請返回以這種方式分割字串所需修改的最少字元數。

示例 1:

輸入:s = "abc", k = 2

輸出:1

解釋:你可以把字串分割成 "ab" 和 "c",並修改 "ab" 中的 1 個字元,將它變成回文串。

示例 2:

輸入:s = "aabbc", k = 3

輸出:0

解釋:你可以把字串分割成 "aa"、"bb" 和 "c",它們都是回文串。

示例 3:

輸入:s = "leetcode", k = 8

輸出:0

1 <= k <= s.length <= 100

s 中只含有小寫英文本母。

class solution  else  else  else 

}if (m == 1)  else {//分割後段的長度必須大於等於分割次數

for (int i = s.length() - m;i > 0;i--) {

min = math.min(min,tos(s.substring(0,i)) + splitstring(s.substring(i,s.length()),m-1));

mapmap = new hashmap<>();

map.put(m,min);

memory.put(s,map);

return min;

public int tos(string s1) {

int c = 0;

for (int i = 0;iif (s1.charat(i) != s1.charat(s1.length() - i - 1)) {

c++;

return c;

要點:任採用遞迴,但增加記憶法用map儲存s欄位被分割成k次時需要的次數節省少量時間,在遞迴的時候時直接返回多個可能中的需修改次數最小值,節省時間,但還是慢

分割回文串

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