给定两个字符串和一个字典,从头到尾找到最短变换序列的长度,使得:一次只能改变一个字符每个中间词必须存在于字典中

本题源自LeetCode

------------------------------------------------------------------------------

给定的俩个字串和字典中的串是一张无向图,构造一棵图的树,广度遍历(按层)这棵树,每次改变开始串的一个字符,如果在字典中就入队列,并从字典中删除,防止重复。

int ladderLength(string start, string end, unordered_set &dict) {
        int count=1;
        unordered_set ret=dict;
        queue que;
        que.push(start);
        while(!que.empty()){
            int size=que.size();
            //构造树当前层循环
            while(size--){
                string s=que.front();
				que.pop();
                for(int i=0;i0){
                            que.push(s);
                            ret.erase(s);
                        }
                    }
                    s=word;  //还原字符串
                }
            }
            //遍历完一层 加 1
            count++;
        }
        return 0;
    }


你可能感兴趣的:(C++,leetcode,算法)