*LeetCode-Word Ladder

来源:互联网 发布:新区甘肃大数据公司 编辑:程序博客网 时间:2024/05/22 15:48

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;    }}


0 0
原创粉丝点击