您的位置:首页 > 其它

*LeetCode-Word Ladder

2015-10-06 03:00 309 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: