Advertisement
Singasking

Word Ladder 2

Jul 3rd, 2023
658
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     vector<vector<string>> findLadders(string beginWord, string endWord, vector<string>& wordList) {
  4.            unordered_map<string,int> map;
  5.         for(auto x:wordList) map[x]=0;
  6.  
  7.         queue<vector<string>> q;
  8.         vector<vector<string>> ans;
  9.        
  10.         q.push({beginWord});
  11.         map[beginWord]=1;
  12.         //1 means visited
  13.         while(!q.empty()) {
  14.             auto temp  = q.front();
  15.             q.pop();
  16.             string word = temp.back();
  17.            
  18.             if(word==endWord) {
  19.                 map[word]=0;
  20.                 ans.push_back(temp);
  21.          
  22.                 continue;
  23.             }
  24.             for(int i=0;i<word.length();i++) {
  25.                 char x = word[i];
  26.                 for(int c='a';c<='z';c++) {
  27.                  
  28.                    word[i]=c;
  29.                  
  30.                     if (map.find(word)!=map.end() && map.find(word)->second!=1) {
  31.                         map[word]=1;
  32.                         vector<string> list = temp;
  33.                         list.push_back(word);
  34.                         q.push({list});
  35.                     }
  36.  
  37.                 }
  38.                 word[i]=x;
  39.             }
  40.  
  41.             map[word]=0;
  42.         }
  43.         return ans;
  44.     }
  45. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement