leetcode 131 分割回文串 1

2021-09-02 08:19:20 字數 632 閱讀 1826

給定乙個字串 s,將s 分割成一些子串,使每個子串都是回文串。

返回 s 所有可能的分割方案。

示例:

輸入: "aab"

輸出:[

["aa","b"],

["a","a","b"]

]

我的演算法:假設每個兩字母之間都有乙個0或者1,表示這兩個字母是否相連,然後列舉出所有的0 1,判斷相應的字母串是否是回文,很遺憾,這個方法超時 18/22;關鍵是重複判斷了很多不必要的,比如說,如果前面的無法構成回文,後面的就不必要了。

class solution ;

int n;

void myinc()

else } }

bool check(string s)

// 檢查是否為回文串

bool ispalindrome(const string& s)

return true;

}// 遞迴解決

void solve(const string &s,int pos)

for(int i = pos; i < s.length(); ++i)

}};

Leetcode131 分割回文串

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b public list partition string s partition s,0 new arraylist res return res index...

LeetCode 131 分割回文串

給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b 思路 回溯法 注意回溯的位置 class solution object def partition self,s type s str rtype list...

LeetCode 131 分割回文串

返回 s 所有可能的分割方案。分析 首先要用動態規劃來標記出回文子串的位置,dp i j true表示字串i到j是回文。因此動態規劃判斷時候是用的 dp i j s i s j len 3 dp i 1 j 1 表示當len 3時候只需要判斷兩個端點,其他時候還要判斷中間是否是回文子串。然後使用回溯...