南宁建设厅网站平顶山网站网站建设
web/
2025/10/2 6:52:24/
文章来源:
南宁建设厅网站,平顶山网站网站建设,检察院网站建设,桐庐住房和城乡建设局网站给定两个单词#xff08;beginWord 和 endWord#xff09;和一个字典#xff0c;找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则#xff1a;
每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明:
如果不存在这样的转换序…给定两个单词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。
代码
class Solution {public int ladderLength(String beginWord, String endWord, ListString wordList) {MapString ,SetString setnew HashMap();for(int i0;iwordList.size();i)set.put(wordList.get(i),new HashSet());for(int i0;iwordList.size();i)//为每个单词构建可到达的单词的set{for(int ji1;jwordList.size();j){if(getDif(wordList.get(i),wordList.get(j))1){set.get(wordList.get(i)).add(wordList.get(j));set.get(wordList.get(j)).add(wordList.get(i));}}}if(!set.containsKey(endWord)) return 0;QueueString queuenew LinkedList();SetString cnew HashSet();for(int i0;iwordList.size();i) if(getDif(wordList.get(i),beginWord)1)//将开始字符串可到达的字符串入队{queue.add(wordList.get(i));c.add(wordList.get(i));}if(queue.isEmpty()) return 0;int res1;while (!queue.isEmpty())//bfs{int sizequeue.size();res;for (int i0;isize;i){String tempqueue.poll();if(temp.equals(endWord)) return res;for(String s:set.get(temp)){if(!c.contains(s)){queue.add(s);c.add(s);}}}}return 0;}public int getDif(String s1, String s2) {///检查单词字母相异的个数int ret0;for(int i0;is1.length();i){if(s1.charAt(i)!s2.charAt(i)) ret;}return ret;}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85479.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!