【LeetCode】Word Ladder 字串,leetcodeladder
題目:Word Ladder
<span style="font-size:18px;">/**LeetCode word ladder * 題目:給定一個起始單詞和一個終結單詞以及一個字典,要求每次變換一個字元,成為字典中新的詞,直到變為最後的詞,要求其最短路徑 * 思路:利用隊列,先彈出第一個詞,分別將詞中每一個字元替換直到找到一個字典中存在的詞,排入佇列,直到匹配的詞是最後一個,此時終止 * 如果沒有這樣的路徑,則返回0 */package javaTrain;import java.util.LinkedList;import java.util.Set;public class Train21 {public int ladderLength(String start, String end, Set<String> dict) { if(dict.size() == 0) return 0; LinkedList<String> queue = new LinkedList(); String tag = new String(); queue.add(start); queue.add(tag); int len = 1; while(queue.size() > 1){ String top = queue.pop(); if(top == tag){//標誌著對於一個詞的每個字元的替換測試已經結束,有用的都放在隊列後面了 len++; queue.add(tag); continue; } else if(top == end){ return len; } for(int i = 0;i < top.length();i++){ char[] zifu = top.toCharArray(); for(char c = 'a';c <= 'z';c++){ zifu[i] = c; String newWord = new String(zifu); if(dict.contains(newWord)){ queue.add(newWord); } dict.remove(newWord); } } } </span>
<span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"></span>return 0;</span>
<span style="font-size:18px;"> }}</span>