Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. class Solution {
  2. public:
  3. vector<string> wordBreak(string s, vector<string>& wordDict) {
  4. unordered_map<string, int> set;
  5. unordered_map<string, vector<string>> memo;
  6. for (const auto& word : wordDict) {
  7. set[word]++;
  8. }
  9. return back(s, set, memo);
  10. }
  11.  
  12.  
  13. vector<string> back(const string& s, unordered_map<string, int>& set, unordered_map<string, vector<string>> memo) {
  14. if (memo[s]) {
  15. return memo[s];
  16. }
  17.  
  18. vector<string>> result;
  19. //std::cout << "Having idx = " << idx << "\n";
  20. for (int i = 1; i <= s.length(); ++i) {
  21. string tmp = s.substr(0, i);
  22. if (set[tmp] != 0) {
  23.  
  24. if (sentence.size() == 0) {
  25. sentence += str;
  26. } else {
  27. sentence += " " + str;
  28. }
  29. auto restResult = back(s.substr(i+1), set, memo);
  30. for (auto r : restResult) {
  31. result.push_back(tmp + " " + r);
  32. }
  33.  
  34. }
  35. }
  36.  
  37. memo[s] = result;
  38. return result;
  39. }
  40. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement