Solution:
This question can be viewed as the most fundamental "breadth search first" (Breadth-first search - Wikipedia). The popular way to implement is using queue data structure to maintain each "level", as the search expands. For this question, a hash map can be used to store the "level" information.
This question can be viewed as the most fundamental "breadth search first" (Breadth-first search - Wikipedia). The popular way to implement is using queue data structure to maintain each "level", as the search expands. For this question, a hash map can be used to store the "level" information.
Code:
class Solution { public: int ladderLength(string beginWord, string endWord, unordered_set<string>& wordList) { unordered_map<string, int> m; m[beginWord] = 1; queue<string> q; q.push(beginWord); while(!q.empty()){ string s = q.front(); q.pop(); for(int i=0; i<s.size(); ++i){ string s1 = s; for(int cr='a'; cr<='z'; ++cr){ s1[i] = cr; if(s1 == endWord) return m[s] + 1; if(wordList.find(s1) != wordList.end() && m.find(s1) == m.end()){ m[s1] = m[s] +1; q.push(s1); } } } } return 0; } };
No comments :
Post a Comment