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];

}

                

        

發佈了29 篇原創文章 · 獲贊 20 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章