[leetcode]Word Ladder

来源:互联网 发布:影视app源码 编辑:程序博客网 时间:2024/06/18 11:34
class Solution {public:int ladderLength(string start, string end, unordered_set<string> &dict) {queue<pair<string, int> > Q;unordered_set<string> visited;Q.push(make_pair(start, 1));visited.insert(start);int res = 0;while (!Q.empty()) {auto front = Q.front();Q.pop();if (front.first == end) {res = front.second;break;}unordered_set<string> next_strs;get_next_strs(front.first, dict, visited, next_strs);for (auto it = next_strs.begin(); it != next_strs.end(); ++it) Q.push(make_pair(*it, front.second + 1));}return res;}void get_next_strs(const string& s, const unordered_set<string>& dict, unordered_set<string>& visited, unordered_set<string>& next_strs) {for (int i = 0; i < (int)s.size(); ++i) {for (char c = 'a'; c <= 'z'; ++c) {if (c != s[i]) {string t = s;t[i] = c;if (dict.count(t) > 0 && visited.count(t) == 0) {next_strs.insert(t);visited.insert(t);}}}}}};
原创粉丝点击