For example,
Given:
beginWord = "hit"
endWord = "cog"
wordList = ["hot","dot","dog","lot","log"]
As one shortest transformation is "hit" -> "hot" -> "dot" -> "dog" -> "cog"
,
return its length 5
.
Note:
class Solution { public: int ladderLength(string beginWord, string endWord, unordered_set<string>& wordList) { if(beginWord == endWord || beginWord.size() != endWord.size()) return 0; queue<string> que; que.push(beginWord); que.push(""); int height = 0; int len = beginWord.size(); while(true) { string word = que.front(); que.pop(); if(que.empty())break; if(word == "") { height++; que.push(""); continue; } else if(word == endWord) { return height + 1; } for(auto i = 0; i < len; i++) { for(auto j = 'a'; j <= 'z'; j++) { char l = word[i]; word[i] = j; if(wordList.find(word) == wordList.end()){ word[i] =l; continue; } que.push(word); wordList.erase(word); word[i] =l; } } } return 0; } };