*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;
}
}
然后判断是否和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;
}
}
相关文章推荐
- BZOJ2874 : 训练士兵
- 关于模板的原理和解析
- 个人博客作业3
- 解决无法从本机访问 SharePoint 网站的问题
- 关于Paxos的历史
- UVA 11605 Lights inside a 3d Grid
- 关于模板的原理和解析
- 四则运算测试
- Leetcode Pascal's Triangle
- PHP判断是否为手机客户端
- PHP获取文件夹内所有文件包括子目录文件的名称或路径
- 口红效应
- ssh插入信息报异常!don't flush the Session after an exception occurs
- UVA 10288 Coupons
- 值得深思的连续赋值--赋值运算符运算顺序
- Delphi中增强程序的不同Windows版本的兼容性技巧
- 网页布局(div)
- 关于spring注入
- 注意Thread.interrupt()方法的真正作用并不是用来中断线程
- Leetcode Majority Element II