bfs的思想 每次从队头拿一个词 从词的第一个字母开 vary from a to z
然后判断是否和end相等 相等就返回length
不等就判断这个新造的词是否在词典里 假如在就remove from dict 并且add to queue
每次这个que里存在的是同一个level的 都循环完了再len++
public class Solution {
public int ladderLength(String beginWord, String endWord, Set<String> wordList) {
if ( beginWord.equals( endWord ))
return 1;
Queue <String> que = new LinkedList <String> ();
que.add( beginWord );
wordList.remove( beginWord );
int len = 2; //初始化是2
while ( !que.isEmpty() ){
int size = que.size(); //这里!!!不能写在for里面 因为size会变
for ( int i = 0; i < size; i ++ ){
String cur = que.poll();
for ( int j = 0; j < cur.length(); j ++ ){
char [] curArr = cur.toCharArray();
for ( char c = 'a'; c <= 'z'; c ++ ){
curArr[j] = c;
String newCur = String.valueOf ( curArr );
if ( newCur.equals( endWord ) )
return len;
if ( wordList.remove( newCur ) )
que.add ( newCur );
}
}
}
len ++; //++的位置
}
return 0;
}
}