赞
踩
https://leetcode-cn.com/problems/word-ladder/
class Solution { public: int ladderLength(string beginWord, string endWord, vector<string>& wordList) { //hash用于查询变化后的时候在给定字典中。 unordered_set<string> wordDirt(wordList.begin(),wordList.end()); //标记单词是否被访问 unordered_set<string> visted; visted.insert(beginWord); //初始化队列 queue<string> q; q.push(beginWord); int res = 1; while(!q.empty()) { //新插入队列的长度 int nextsize = q.size(); while(nextsize--) { string curWord =q.front(); q.pop(); //尝试替换当前位置的每一个位置 for(int i = 0;i<curWord.size();i++) { string newWord = curWord; //每一个位置用26个字母进行替换,然后用hash查找是否在给定字典里面 for(auto ch = 'a';ch<='z';ch++) { newWord[i] = ch; //给定字典里面是否有这个单词 if(!wordDirt.count(newWord) || visted.count(newWord)) continue; //找到结果 if(newWord == endWord) return res+1; //没有成功,新单词入队列 visted.insert(newWord); q.push(newWord); } } } res++; } //转换不成功 return 0; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。