Advertisement
SalmaYasser

word break

Dec 21st, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. class Solution {
  2. public:
  3.  
  4. bool fun (string &s, unordered_map < string , bool> &str_dir, int begin, vector <int> &dp)
  5. {
  6.  
  7. if (begin == s.size())
  8. return true;
  9.  
  10. if (dp[begin] != -1)
  11. return dp[begin];
  12.  
  13. for (int end = begin ; end < s.size(); end ++)
  14. {
  15.  
  16.  
  17.  
  18. if ( str_dir.count(s.substr(begin, end - begin + 1)) != 0 && fun (s, str_dir, end + 1, dp))
  19. {
  20.  
  21. dp[begin] = true;
  22. return true;
  23.  
  24. }
  25. }
  26.  
  27. dp[begin] = false;
  28. return false;
  29.  
  30. }
  31. bool wordBreak(string s, vector<string>& wordDict) {
  32.  
  33. vector <int> dp (s.size(), -1);
  34. unordered_map < string , bool> str_dir;
  35.  
  36. for (auto cur : wordDict)
  37. {
  38. str_dir[cur] = true;
  39. }
  40.  
  41. if (str_dir.size() == 0) return false;
  42. return fun (s, str_dir, 0, dp);
  43. }
  44. };
  45.  
  46.  
  47. /*
  48.  
  49.  
  50.  
  51. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement