127. 单词接龙
难度中等
给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:
说明:
思路:
利用set表来存储目标字符串,queue队列来保存当前与目标字符串匹配的转换结果以及当前的操作次数;
pair
目标字符串与当前字符串仅差一个字符的时候,将该目标字符串存储到队列中,并将该字符串从set中删除,防止多次访问该字符串。
int ladderLength(string beginWord, string endWord, vector
queue
unordered_set
if(!data.count(endWord)) return 0;
M.push({beginWord,1});
int step;
string temp;
while(!M.empty()){
temp=M.front().first;
step=M.front().second;
if(temp==endWord) return step;
M.pop();
char c;
for(int i=0;i c=temp[i]; for(char ch='a';ch<='z';++ch){ if(ch==c) continue; temp[i]=ch; if(data.count(temp)){ M.push({temp,step+1}); data.erase(temp); } temp[i]=c; } } } return 0; }