class QueueNode { public: string word; int length; QueueNode(const string& str, int l):word(str),length(l){} }; class Solution { public: int ladderLength(string start, string end, unordered_set<string> &dict) { // Start typing your C/C++ solution below // DO NOT write int main() function if(start.empty()||end.empty()||start.size()!=end.size()) return 0; int nstr = start.size(); unordered_set<string> set; queue<QueueNode> q; q.push(QueueNode(start,1)); set.insert(start); while(!q.empty()) { QueueNode node = q.front(); q.pop(); if(node.word==end) return node.length; for(int i=0;i<nstr;i++) { for(int j=0;j<26;j++) { string tmp = node.word; tmp[i] = 'a'+j; if(dict.count(tmp)==1&&set.count(tmp)==0) { set.insert(tmp); q.push(QueueNode(tmp,node.length+1)); } } } } return 0; } };
原文链接: https://www.cnblogs.com/summer-zhou/p/3246686.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/99072
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!