class Solution {
public:
int minCut(string s) {
int n = s.length();
vector<vector<int>> g(n, vector<int>(n, 1));
for(int i = n-2; i >= 0; i--){
for(int j = i+1; j < n; j++){
g[i][j] = g[i+1][j-1] && (s[i] == s[j]);
}
}
vector<int> f(n, INT_MAX);
for(int i = 0;i < n; i++){
if(g[0][i]){
f[i] = 0;
}
else{
for(int j = 0; j < i; ++j){
if(g[j + 1][i]){
f[i] = min(f[i], f[j]+1);
}
}
}
}
return f[n-1];
}
};
Leecode132 分割回文串最少次数
最新推荐文章于 2024-06-21 17:14:10 发布