您的位置:首页 > 其它

LeetCode-Palindrome Partitioning II

2013-08-22 16:34 246 查看
class Solution {
public:
int minCut(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (s.size() == 0)
{
return 0;
}
vector<vector<bool> > F(s.size(), vector<bool>(s.size(), false));
for (int i = s.size() - 1; i >= 0; --i)
for (int j = i; j < s.size(); ++j)
F[i][j] = s[i] == s[j] && (j - i < 2 || F[i + 1][j - 1]);
vector<int> minCnt(s.size(), 0);
for (int i = 1; i < s.size(); ++i)
{
if (F[0][i])
{
minCnt[i] = 0;
}
else
{
int curMin = i;
for (int j = 1; j <= i; ++j)
{
if (F[j][i])
{
curMin = min(curMin, minCnt[j - 1] + 1);
}
}
minCnt[i] = curMin;
}
}
return minCnt[s.size() - 1];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: