Skip to content

Commit 25fbc43

Browse files
committed
20180218
1 parent b687629 commit 25fbc43

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

code/lc105.java

-1
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,4 @@ public static TreeNode recursion(int[] preorder, int[] inorder, int pre_index, i
3737
return tn;
3838
}
3939

40-
4140
}

code/lc127.java

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package code;
2+
/*
3+
* 127. Word Ladder
4+
* 题意:给定开始字符串,结束字符串,和一个字符串数组,每次替换字符串中的一个字符,问最少几个步骤变为终止字符串
5+
* 难度:Medium
6+
* 分类:Breadth-first Search
7+
* 思路:bfs, 利用双向bfs可以加快搜索https://leetcode.com/problems/word-ladder/discuss/40711/Two-end-BFS-in-Java-31ms.
8+
* Tips:拓扑排序,很经典的BFS,好好看看
9+
*/
10+
import java.util.ArrayDeque;
11+
import java.util.List;
12+
import java.util.Queue;
13+
14+
public class lc127 {
15+
public int ladderLength(String beginWord, String endWord, List<String> wordList) {
16+
if(!wordList.contains(endWord)) return 0;
17+
Queue<String> qu = new ArrayDeque(); //用一个Queue和int size类似树的层次遍历,和两个hashset效果一样
18+
qu.add(beginWord);
19+
int level = 2;
20+
while(!qu.isEmpty()){
21+
int size = qu.size();
22+
for (int i = 0; i < size ; i++) {
23+
char[] curr_str = qu.remove().toCharArray();
24+
System.out.println(String.valueOf(curr_str));
25+
for (int j = 0; j < curr_str.length ; j++) {
26+
char ch = curr_str[j];
27+
for (char k = 'a'; k <='z' ; k++) { //如果每次比较两个字符串是否差一位,时间复杂度太大,所以直接替换一个字符
28+
curr_str[j] = k;
29+
if(String.valueOf(curr_str).equals(endWord)) return level;
30+
if(wordList.contains(String.valueOf(curr_str))){
31+
wordList.remove(String.valueOf(curr_str));
32+
qu.add(String.valueOf(curr_str));
33+
}
34+
}
35+
curr_str[j] = ch;
36+
}
37+
}
38+
level++;
39+
}
40+
return 0;
41+
}
42+
}

readme.md

+1
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ Language: Java
8686
| 122 [Java](./code/lc122.java)
8787
| 124 [Java](./code/lc124.java)
8888
| 125 [Java](./code/lc125.java)
89+
| 127 [Java](./code/lc127.java)
8990
| 128 [Java](./code/lc128.java)
9091
| 136 [Java](./code/lc136.java)
9192
| 139 [Java](./code/lc139.java)

0 commit comments

Comments
 (0)