Given two words (start and end), and a dictionary, find the length of shortest transformation sequence from start to end, such that:

Only one letter can be changed at a time
Each intermediate word must exist in the dictionary

1.但难点是怎么判断两个字符串之间仅仅一个字母不同。
2.用BFS求两个节点之间的最短路径。
3.一个注意的细节：
C++ string 转为char*

`char *chs = new char[front.size()];strcpy(chs, front.c_str());`

`string str = "abc";char *chs = &str[0];string str2(chs);cout << str2 << endl;`

str2输出是abc

`class Solution {public:    /**    * @param start, a string    * @param end, a string    * @param dict, a set of string    * @return an integer    */    int ladderLength(string start, string end, unordered_set<string> &dict) {        // write your code here        queue<string> Q;        set<string> visited;        dict.insert(end);        Q.push(start);        int cnt = 1;        while (!Q.empty()){            cnt++;            int Qsize = Q.size();            while (Qsize--){                string front = Q.front();                Q.pop();                for (int i = 0; i<front.size(); i++){                    //char *chs = new char[front.size()];                    //strcpy(chs, front.c_str());                    string chs=front;                    for (char ch = 'a'; ch <= 'z'; ch++){                        chs[i] = ch;                        //string tmp(chs);                        if (dict.count(chs) && !visited.count(chs)){                            if (chs == end){                                return cnt;                            }                            Q.push(chs);                            visited.insert(chs);                        }                    }                }            }        }        return 0;    }};`