127. Word Ladder

class Solution {
public:
    int ladderLength(string beginWord, string endWord, vector<string>& wordList) {
        set<string> rest;
        queue<string> visit;
        int res = 0;
        for (string word : wordList)
            rest.insert(word);

        visit.push(beginWord);
        rest.erase(beginWord);
        while(!visit.empty()) {
            res++;
            for (int i = visit.size(); i > 0; i--) {
                string curr = visit.front();
                visit.pop();
                if (curr == endWord) return res;
                for (int j = 0; j < curr.size(); j++) {
                    char tmp = curr[j];
                    for (char k = 'a'; k <= 'z'; k++) {
                        curr[j] = k;
                        if (rest.count(curr)) {
                            visit.push(curr);
                            rest.erase(curr);
                        }
                    }
                    curr[j] = tmp;
                }
            }
        }
        return 0;
    }
};

results matching ""

    No results matching ""