word_break

给定一个字符串和一个字典,判断该字符串能不能分隔成字典里的元素。
如,给定s = ‘netease’, dict = ['net', 'ease'],则返回true,因为netease可以被分解为(‘net’, ‘ease’)

动态规划。f(i)表示[0,i]是否可以分词,f(i) = f(j) && f(j+1,i), 0<= j

bool word_break(string s, unordered_set& dict)
{
  if(s.size() == 0)
    return false;
  int len = s.size(); 
  vector dp(len+1, false);
  
  dp[0]=true;
  for(int i = 1; i<=len; ++i)
    for(int j=i-1; j>=0; --j)
      if(dp[j] && dict.find(s.substr(j, i-j)) != dict.end())
        {
            dp[i] = true;
            break;
        }

  return dp[len];
}

你可能感兴趣的:(word_break)