word-break 对一个字符串根据给出的字典判断是否可以根据字典切分(DP问题)

对于可用动态规划求解的问题,一般有两个特征:1)最优子结构;2)重叠子问题

思路:定义labels[i]表示前i个字符是否可以拆分成字典中的词,很显然有

        labels[i]=1 if  labels[j] && s[j+1,i] in dict   else 0    其中(0<j<i)

    bool fun(String s,unordered_set<String> &dict){

         int len=s.length();

        vector<bool> labels(len+1,flase);

        labels[0]=true;

        for(int i=1;i<len;+=i)

            for(int j=0;labels[j] && j<i;++j)

                if (dict.find(s.substr(j,i-j))!=dict.end())

                    labels[i]=true;

        return labels[len];

}

                

        

猜你喜欢

转载自blog.csdn.net/asdasdasdasasd1111/article/details/80757849