127. 单词接龙
1 class Solution 2 { 3 public: 4 int ladderLength(string beginWord, string endWord, vector<string>& wordList) 5 { 6 //hash用于去重 7 unordered_set<string> hash(wordList.begin(),wordList.end()); 8 //如果没有找到endWord,则返回0 9 if(hash.find(endWord) == hash.end()) return 0; 10 11 queue<string> q; 12 q.push(beginWord); 13 14 int num = 0; 15 while(!q.empty()) 16 { 17 num += 1;//每一层+1 18 int n = q.size(); 19 for(int i = 0;i < n;i ++)//对每一层进行操作 20 { 21 string item = q.front();//取出队头元素 22 q.pop(); 23 24 for(int j = 0;j < item.size();j ++)//对队头元素进行操作 25 { 26 char ch = item[j];//备份该元素中的某一个字母 27 for(char k = 'a';k <= 'z';k ++)//找出不同位的个数为1 28 { 29 item[j] = k; 30 if(item == endWord) return num + 1;//如果为endWord,返回num+1 31 if(hash.find(item) != hash.end()) //如果找到了 32 { 33 hash.erase(item);//首先删除,防止后面重复 34 q.push(item);//进入队列中 35 } 36 } 37 item[j] = ch;//该字母复位 38 } 39 } 40 } 41 return 0; 42 } 43 };
Mamba never out

浙公网安备 33010602011771号