对于可用动态规划求解的问题,一般有两个特征: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];
}