题目描述
力扣题目链接
题解
C++
class Solution {
public:
int ladderLength(string beginWord, string endWord, vector<string> &wordList) {
unordered_set<string> word_set(wordList.begin(), wordList.end());
unordered_map<string, int> word_map;
queue<string> word_queue;
if (word_set.find(endWord) == word_set.end()) {
return 0;
}
word_queue.push(beginWord);
word_map.emplace(pair<string, int>(beginWord, 1));
while (!word_queue.empty()) {
string cur_word = word_queue.front();
word_queue.pop();
int path = word_map[cur_word];
for (int i = 0; i < cur_word.size(); i++) {
string tmp_word = cur_word;
for (int j = 0; j <= 26; j++) {
tmp_word.at(i) = 97 + j;
if (tmp_word == endWord) {
return path + 1;
}
if (word_set.find(tmp_word) != word_set.end() && word_map.find(tmp_word) == word_map.end()) {
word_map.emplace(pair<string, int>(tmp_word, path + 1));
word_queue.emplace(tmp_word);
}
}
}
}
return 0;
}
};