LeetCode刷题_140

class Solution {
public:
    vector<string> wordBreak(string s, vector<string>& wordDict) {
        if (m.count(s)) return m[s];	//判断map中有没有s
        if (s.empty())  return {""};
        vector<string> res;
        for (string word : wordDict) {	
            if (s.substr(0, word.size()) != word) continue;	//进行前缀判断
            for (string r : wordBreak(s.substr(word.size()), wordDict)) {	
            //DFS搜索 返回值为当前前缀对应的解 被分割好了
            	//sustr去除前缀
                res.push_back(word + (r.empty() ? "" : " ") + r);	
                //整合答案
            }
        }
        return m[s] = res;
    }
private:
    unordered_map<string, vector<string>> m;
};
    作者:LightAc  
出处:https://www.cnblogs.com/lightac/  
联系:
Email: dzz@stu.ouc.edu.cn  
QQ: 1171613053
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号