【second】Word Ladder
BFS
int ladderLength(string start, string end, unordered_set<string> &dict) {
// Note: The Solution object is instantiated only once and is reused by each test case.
int len = 1;
unordered_set<string> strs;
queue<string> q;
q.push(start);
strs.insert(start);
int cnt = 1;
int next_cnt;
while(!q.empty())
{
next_cnt = 0;
for(int k=0;k<cnt;k++)
{
string s = q.front();
q.pop();
if(s==end)
return len;
for(int i=0;i<s.size();i++)
{
for(int j=0;j<26;j++)
{
char c = s[i];
s[i] = 'a'+j;
if(dict.find(s)!=dict.end()&&strs.find(s)==strs.end())
{
strs.insert(s);
q.push(s);
++next_cnt;
}
s[i] = c;
}
}
}
++len;
cnt = next_cnt;
}
return 0;
}
浙公网安备 33010602011771号