码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode140 Word Break II

时间:2018-10-20 13:45:13      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:rdb   div   避免   tor   思路   strong   计算   map   ict   

思路:

直接爆搜会超时,需要使用记忆化搜索。使用map把已经计算过的情况记录下来,避免重复计算。

实现:

 1 class Solution 
 2 {
 3 public:
 4     vector<string> wordBreak(string s, vector<string>& wordDict) 
 5     {
 6          unordered_map<int, vector<string>> dp;
 7         return dfs(s, 0, wordDict, dp);
 8     }
 9     vector<string> dfs(string s, int cur, vector<string>& wordDict, unordered_map<int, vector<string>>& dp)
10     {
11         if (cur >= s.length())
12         {
13             vector<string> v;
14             v.push_back("");
15             return v;
16         }
17         if (dp.count(cur)) return dp[cur];
18         vector<string> ans;
19         for (auto it: wordDict)
20         {
21             int l = it.length();
22             if (cur + l <= s.length() && s.substr(cur, l) == it)
23             {
24                 if (cur + l == s.length())
25                     ans.push_back(it);
26                 else
27                 {
28                     vector<string> tmp = dfs(s, cur + l, wordDict, dp);
29                     for (auto it1: tmp)
30                     {
31                         ans.push_back(it + " " + it1);
32                     }
33                 }    
34             }
35         }
36         return dp[cur] = ans;
37     }
38 };

 

leetcode140 Word Break II

标签:rdb   div   避免   tor   思路   strong   计算   map   ict   

原文地址:https://www.cnblogs.com/wangyiming/p/9821288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!