#include<iostream>
#include<string>
#include<set>
#include<unordered_set>
#include<unordered_map>
#include<map>
#include<deque>
using namespace std;
class Solution
{
public:
int wordladder(string start,string end,set<string>dict)
{
map<string,int>dis;
deque<string>q;
q.push_back(start);
dis[start]=1;
while(!q.empty())
{
string word=q.front();
q.pop_front();
for(int i=0;i<word.size();i++)
{
string temp=word;
for(char c='a';c<='z';c++)
{
temp[i]=c;
if(temp==end)
{
return dis[word]+1;
}
if(dict.count(temp)>0&&dis.count(temp)==0)
{
dis[temp]=dis[word]+1;
dict.erase(temp);
q.push_back(temp);
}
}
}
}
return dis[end];
}
};
void main()
{
Solution solution;
set<string>res;
res.insert("hot");
res.insert("dot");
res.insert("dog");
res.insert("lot");
res.insert("log");
cout<<solution.wordladder("hit","cog",res);
}
[leetcode]Word Ladder
最新推荐文章于 2018-06-12 10:14:22 发布