件名の説明:
二つの単語と単語のリストに、各変換は、唯一の文字を変更することができ、かつ唯一の単語リストに単語を変更しました。Q.どのように何回も変換の最小値、beginwordはendwordになることができます。
アイデア:
BFS。リスト内の単語は、キューに参加する場合は、単語の各文字は、変換の26種類を試してみます。
タイムアウトした、後で直接削除ベクトルを表示されている各単語のために、設定するように変更します。検索は、その後の前に、時間を節約できます。
BFSの方法は、まずそのステップの最小数を見つける必要があります。
コード:
class Solution {
public:
int ladderLength(string beginWord, string endWord, vector<string>& wordList) {
set<string> st(wordList.begin(), wordList.end());
map<string, int> mp;
mp[beginWord] = 1;
queue<string> que;
que.push(beginWord);
st.erase(beginWord);
int len = beginWord.length();
while(!que.empty()) {
string cur = que.front();
que.pop();
if (cur == endWord) return mp[endWord];
for (int i=0; i<len; ++i) {
string nxt = cur;
for (int j=0; j<26; ++j) {
nxt[i] = 'a' + j;
if (st.count(nxt) && !mp[nxt]) {
mp[nxt] = mp[cur] + 1;
que.push(nxt);
st.erase(nxt);
}
}
}
}
return mp[endWord];
}
};
今週はBFS週間になります。
実際に、私はBFSを達成したいとキューとスタックの問題をDFS。