给出一个字符串s,分割s使得分割出的每一个子串都是回文串
计算将字符串s分割成回文分割结果的最小切割数
例如:给定字符串s="aab",
返回1,因为回文分割结果["aa","b"]是切割一次生成的。
class Solution {
public:
/**
*
* @param s string字符串
* @return int整型
*/
bool isp(string s,int start,int end){
while(start<end){
if(s[start]!=s[end]){
return false;
}
start++;
end--;
}
return true;
}
int minCut(string s) {
// write code here
int length=s.size();
if(length==0){
return 0;
}
if(isp(s,0,length-1))
{
return 0;
}
vector<int>a(length+1,0);
for(int i=1;i<=length;i++){
a[i]=i-1;
}
for(int i=2;i<=length;i++){
if(isp(s,0,i-1)){
a[i]=0;
continue;
}
for(int j=1;j<i;j++){
if(isp(s,j,i-1))
{
a[i]=min(a[i],a[j]+1);
}
}
}
return a[length];
}
};

本文介绍了一种算法,用于将给定的字符串分割成多个回文串,目标是最小化分割次数。通过定义一个判断回文的辅助函数和动态规划策略,文章详细解释了如何高效地解决此问题。
1万+

被折叠的 条评论
为什么被折叠?



