zoukankan      html  css  js  c++  java
  • Word Break

    Description:

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.

    For example, given
    s = "leetcode",
    dict = ["leet", "code"].

    Return true because "leetcode" can be segmented as "leet code".

    Code:

     1   bool wordBreak(string s, unordered_set<string>& wordDict) {
     2         //flag[i][j]表示s[i]...s[j]是否为一个word
     3       int length = s.size();  
     4      bool flag[MAX][MAX]={false};
     5       for (int i = 0; i < length; ++i)
     6       {
     7         string str(s,i,1);
     8         if (wordDict.find(str)!=wordDict.end())
     9             flag[i][i] = true;
    10       }
    11      
    12      for (int r=2; r<=length; ++r)
    13      {//计算长度为2,3,...n的字符串
    14          for (int i=0; i <= length-r; ++i)
    15          {
    16              int j = i+r-1;//j<=length-1
    17             //计算flag[i][j];
    18             string str(s,i,r);
    19             if (wordDict.find(str)!=wordDict.end())
    20             {
    21                 flag[i][j] = true;
    22                 continue;
    23             }
    24              for (int k = i; k < j; ++k)
    25              {
    26                  if (flag[i][k]&&flag[k+1][j])
    27                  {
    28                     flag[i][j] = true;
    29                     break;
    30                  }
    31              }
    32          }
    33      }
    34       return flag[0][length-1];
    35     }
  • 相关阅读:
    Team Foundation Server操作说明
    SPSS二次开发
    EXT 组件一些属性与方法(Tree)
    win10经验总结
    for语句执行顺序
    数组快速生成range的方法
    切图技巧
    input和textarea区别
    hosts文件位置
    css3动画总结
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4592163.html
Copyright © 2011-2022 走看看