leetcode 140 word break II 单词拆分2

Posted Joel_Wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 140 word break II 单词拆分2相关的知识,希望对你有一定的参考价值。

 

单词拆分2,递归+dp,

需要使用递归,同时使用记忆化搜索保存下来结果,c++代码如下

 

 1 class Solution {
 2 public:
 3     //定义一个子串和子串拆分(如果有的话)的映射
 4     unordered_map<string,vector<string>>m;
 5     vector<string> wordBreak(string s, vector<string>& wordDict) {
 6         if(m.count(s)) return m[s];//当映射的子串有s说明已经判断完了返回拆分m[s]
 7         if(s.empty()) return {""};//假如s是空的返回空串
 8         vector<string> res;
 9         for(string word: wordDict){
10             if(s.substr(0,word.size())!=word) continue;//在s开头找到字典中的词;
11             vector<string> rem=wordBreak(s.substr(word.size()),wordDict);//rem是剩下的子串拆分,递归调用wordBreak
12             for(string str:rem){
13                 res.push_back(word+(str.empty() ? "" : " ")+str);//str非空时,前面加个空格后面再加单词;
14             }
15         }
16         return m[s]=res;
17     }
18 };

参考:http://www.cnblogs.com/grandyang/p/4576240.html

 

以上是关于leetcode 140 word break II 单词拆分2的主要内容,如果未能解决你的问题,请参考以下文章

140. Word Break II

140. Word Break II

140. Word Break II

140. Word Break II

140. Word Break II

140. Word Break II