LintCode 120 單詞接龍 廣度優先搜尋

2021-07-26 12:19:40 字數 1182 閱讀 9245

給出兩個單詞(start和end)和乙個字典,找到從start到end的最短轉換序列

比如:

每次只能改變乙個字母。

變換過程中的中間單詞必須在字典中出現。

注意事項

如果沒有轉換序列則返回0。

所有單詞具有相同的長度。

所有單詞都只包含小寫字母。

樣例 給出資料如下:

start = 「hit」

end = 「cog」

dict = [「hot」,」dot」,」dog」,」lot」,」log」]

乙個最短的變換序列是 「hit」 -> 「hot」 -> 「dot」 -> 「dog」 -> 「cog」,

返回它的長度 5

策略:廣度優先搜尋

注意事項:

1、佇列的分層,我用特殊標誌」!」分開

2、自己編寫乙個小函式 boolean isonedifferent()

3、visited 標記是否已經走過

static

public

int ladderlength(string start, string end, setdict)

if(isonedifferent(temp, end))//當找到解時

for(int i=0;iif(visited[i]==0&&isonedifferent(temp, a[i].tostring()))

}if(que.peek().equals("!"))//只有前一層全部poll了

//漏出"!"時,才再加乙個特殊符號

//少了if則加特殊符號的隔離作用就消失了

que.add("!");

}if(flag==false) return

0;//如果沒找到解

return

count;//找到了就返回值

}//自己編寫的小函式,判斷是否只是乙個字母不一樣

static

boolean isonedifferent(string temp,string start)

if(count==1) return

true;

else

return

false;

}

Lint Code 120 單詞接龍

雖然知道是使用bfs求樹節點之間的最短路徑問題但是還是碼不出來,看的答案,失敗,具體思路和二叉樹的層次遍歷近似 123 import org.junit.test 45 import j a.util.67 public class ladderlength 46if start.equals en...

lintcode 單詞接龍 120

給出兩個單詞 start和end 和乙個字典,找到從start到end的最短轉換序列 比如 每次只能改變乙個字母。變換過程中的中間單詞必須在字典中出現。您在真實的面試中是否遇到過這個題?樣例 給出資料如下 start hit end cog dict hot dot dog lot log 乙個最短...

lintcode 單詞接龍

給出兩個單詞 start和end 和乙個字典,找出從start到end的最短轉換序列,輸出最短序列的長度。變換規則如下 每次只能改變乙個字母。變換過程中的中間單詞必須在字典 現。起始單詞和結束單詞不需要出現在字典中 輸入 start a end c dict a b c 輸出 2 解釋 a c 輸入...