leetcode Word Ladder

来源:互联网 发布:淘宝5年老店标志没了 编辑:程序博客网 时间:2024/04/27 17:14

将该问题看作图来求解,某结点相邻结点即为改变一字母后存在于dict的单词,BFS较DFS省时间。

博客http://blog.csdn.net/zxzxy1988/article/details/8591890 阐述的很详细


代码

class Solution{public:int ladderLength(string start, string end, unordered_set<string> &dict){queue<string> queue_pop, queue_push;int distance = 1;queue_pop.push(start);while(!dict.empty()&&!queue_pop.empty()){while(!queue_pop.empty()){string str(queue_pop.front());queue_pop.pop();for(int i = 0; i < str.size(); ++i)  for(char j = 'a'; j <= 'z'; ++j)  { if(j==str[i]) continue; char temp = str[i]; str[i] = j; if( str == end ) return distance + 1; if(dict.count(str)) { queue_push.push(str); dict.erase(str); } str[i] = temp;    }}swap(queue_pop, queue_push);distance++;}return 0;}};



0 0
原创粉丝点击