leetcode 127. 單詞接龍(C++)
給定兩個單詞(beginWord 和 endWord)和一個字典,找到從 beginWord 到 endWord 的最短轉換序列的長度。轉換需遵循如下規則:
- 每次轉換隻能改變一個字母。
- 轉換過程中的中間單詞必須是字典中的單詞。
說明:
- 如果不存在這樣的轉換序列,返回 0。
- 所有單詞具有相同的長度。
- 所有單詞只由小寫字母組成。
- 字典中不存在重複的單詞。
- 你可以假設 beginWord 和 endWord 是非空的,且二者不相同。
示例 1:
輸入: beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"] 輸出: 5 解釋: 一個最短轉換序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog", 返回它的長度 5。
示例 2:
輸入: beginWord = "hit" endWord = "cog" wordList = ["hot","dot","dog","lot","log"] 輸出: 0 解釋: endWord "cog" 不在字典中,所以無法進行轉換。
C++
class Solution {
public:
int ladderLength(string beginWord, string endWord, vector<string>& wordList) {
unordered_set<string> word;
for (auto s : wordList) {
word.insert(s);
}
if (word.find(endWord) == word.end()) {
return 0;
}
queue<string> que;
que.push(beginWord);
unordered_set<string> visited;
visited.insert(beginWord);
int num = 1;
while (!que.empty()) {
int m = que.size();
for (int i = 0; i < m; i++) {
string str = que.front();
que.pop();
if (str == endWord) {
return num;
}
for (int j = 0; j < str.size(); j++) {
string ss = str;
for (int k = 0; k < 26; k++) {
char c = k + 'a';
if (c != str[j]) {
ss[j] = c;
}
if (word.find(ss) != word.end() && visited.find(ss) == visited.end()) {
visited.insert(ss);
que.push(ss);
}
}
}
}
num++;
}
return 0;
}
};
相關文章
- 【LeetCode】127. 單詞接龍LeetCode
- LeetCode題解:127. 單詞接龍,雙向BFS,JavaScript,詳細註釋LeetCodeJavaScript
- LeetCode 單詞拆分LeetCode
- 洛谷題單指南-搜尋-P1019 [NOIP2000 提高組] 單詞接龍
- C++ 統計單詞數C++
- LeetCode-139-單詞拆分LeetCode
- LeetCode-單詞規律LeetCode
- C++原始碼單詞掃描程式(詞法分析)C++原始碼詞法分析
- LeetCode-290-單詞規律LeetCode
- LeetCode-079-單詞搜尋LeetCode
- [LeetCode題解]79. 單詞搜尋LeetCode
- LeetCode-434-字串中的單詞數LeetCode字串
- 社群拼團接龍小程式
- C++謂詞C++
- leetcode_58_最後一個單詞的長度_簡單LeetCode
- LeetCode-151-翻轉字串裡的單詞LeetCode字串
- 紙牌接龍合集The Zachtronics Solitaire Collection MacAIMac
- 單詞
- [LeetCode] Short Encoding of Words 單詞集的短編碼LeetCodeEncoding
- Leetcode 58. 最後一個單詞的長度LeetCode
- 【leetcode 簡單】第十四題 最後一個單詞的長度LeetCode
- 單詞小卡片 -- 從單詞、例句收集到命令式背單詞
- Win10系統空當接龍游戲在哪裡 win10遊戲空當接龍如何開啟Win10遊戲
- WPF 做一個超級簡單的 1024 數字接龍游戲
- 橋接模式(c++實現)橋接模式C++
- 每日leetcode——42. 接雨水LeetCode
- LeetCode1160.拼寫單詞(Java+暴力+HashMap)LeetCodeJavaHashMap
- [leetcode 30 串聯所有單詞的子串 10ms]LeetCode
- webpack單詞Web
- 單詞拆分
- 單詞遊戲遊戲
- LeetCode每日一題:反轉字串中的單詞 III(No.557)LeetCode每日一題字串
- 【LeetCode】290. Word Pattern 單詞規律(Easy)(JAVA)每日一題LeetCodeJava每日一題
- LeetCode題解(0692):前K個高頻單詞(Python)LeetCodePython
- python爬蟲實現成語接龍1.0Python爬蟲
- 我做了一個成語接龍的小程式
- LeetCode每日一題: 最後一個單詞的長度(No.58)LeetCode每日一題
- 10:單詞排序排序