BFS,然后利用set查找很快的特点
class Solution {
public:
int ladderLength(string beginWord, string endWord, vector<string>& wordList) {
set<string>dict;
set<string>vis;
for(string s : wordList) dict.insert(s);
if(!dict.count(endWord)) return 0;
queue<string>q;
q.push(beginWord);
vis.insert(beginWord);
int cnt = 1;
while(!q.empty())
{
int len = q.size();
cnt++;
for(int i = 0;i<len;i++)
{
string s = q.front();
q.pop();
for(int j = 0;j<s.size();j++)
{
string newWord = s;
for(int k = 0;k<26;k++)
{
newWord[j] = 'a'+k;
if(dict.count(newWord) && !vis.count(newWord))
{
if(newWord == endWord) return cnt;
vis.insert(newWord);
q.push(newWord);
}
}
}
}
}
return 0;
}
};