词语序列
#include<unordered_set>
#include<algorithm>
#include<iostream>
#include<string>
#include<queue>
using namespace std;
class Solution {
public:
int res = 1;
queue<string> strQueue;
bool isTransWord(string s, string d)
{
if (s.size() != d.size())
return false;
int count = 0;
for (int i = 0; i < s.size(); i++)
{
if (s[i] != d[i])
count++;
}
return count == 1 ? true : false;
}
int ladderLength(string start, string end, unordered_set<string> &dict) {
strQueue.push(start);
while (!strQueue.empty())
{
int queuesize = strQueue.size();
while (queuesize > 0)
{
string str = strQueue.front();
strQueue.pop();
queuesize--;
if (isTransWord(str, end))
{
return res;
}
for (auto it = dict.begin(); it != dict.end(); it++)
{
if (isTransWord(*it, str))
{
strQueue.push(*it);
dict.erase(*it);
it = dict.begin();
}
}
}
res++;
}
return 0;
}
};