题解 | #分割回文串-ii#

分割回文串-ii

http://www.nowcoder.com/practice/1025ffc2939547e39e8a38a955de1dd3

图片说明

class Solution {
public:
    /**
     * 
     * @param s string字符串 
     * @return int整型
     */
    bool isPal(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
       //===========状态定义及初始化==================
        vector<int> F(s.size()+1);     // F[i] 表示前i个字符的最小分割数;
        for(int i = 1;i<=s.size(); ++i)
        {
            F[i] = i-1;   // i个字符 最大分割数为i-1;  
        }
        // ==============状态递推===================
        for(int i = 2; i<= s.size();++i)
        {
            // 判断整体
            if(isPal(s,0,i-1)) // 整体是回文
            {
                F[i] = 0; // 表示从头到第i个字符的最小分割数
            }
            else                // 整体不是回文
            {
                for(int j = 1; j < i ;j++)
                {
                    if(isPal(s, j, i-1)) // 相当于 图中“|”后面的字符串
                    {
                        F[i] = min(F[i], F[j] + 1);
                    }
                }
            }
        }
        return F[s.size()];
    }
};
全部评论

相关推荐

04-15 23:42
中山大学 Java
ResourceUtilization:过几天楼主就会捧着一堆offer来问牛友们该怎么选辣
点赞 评论 收藏
分享
04-17 18:32
门头沟学院 Java
野猪不是猪🐗:他跟你一个学校,你要是进来之后待遇比他好,他受得了?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务