zoukankan      html  css  js  c++  java
  • 127. 单词接龙

    给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:

    1. 每次转换只能改变一个字母。
    2. 转换过程中的中间单词必须是字典中的单词。

    说明:

    • 如果不存在这样的转换序列,返回 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" 不在字典中,所以无法进行转换。


    bfs改变每个word里的char,直到找到所有转变方式

    class Solution {
    public:
        int ladderLength(string beginWord, string endWord, vector<string>& wordList) {
            unordered_set<string> wordset(wordList.begin(),wordList.end());
            if(!wordset.count(endWord))
                return 0;
            unordered_map<string, int> dis;
            dis.insert(make_pair(beginWord, 1));
            
            queue<string> q;
            q.push(beginWord);
            
            while (!q.empty()) {
                string word = q.front();
                q.pop();
                
                if (word == endWord) {
                    break;
                }
                
                for (int i = 0; i < word.size(); i++) {
                    string tmp = word;
                    for (char c = 'a'; c <= 'z'; c++) {
                        tmp[i] = c;
                        if (wordset.count(tmp) == 1 && dis.count(tmp) == 0) {
                            q.push(tmp);
                            dis.insert(make_pair(tmp, dis[word] + 1));
                        }
                    }
                }
            }
    
            return dis[endWord];
        }
    };
  • 相关阅读:
    排序算法的实现(冒泡,选择,插入 O(N*N)--理解方法实现
    HTTPS工作原理和TCP握手机制
    HTTP协议学习
    IP头,TCP头,UDP头,MAC帧头定义
    单链表的实现
    数字图像处理------中值滤波
    对于矩阵的理解-- by 孟岩老师
    java编码问题总结
    jsp数据库连接大全和数据库操作封装到Javabean
    构建一个高可扩展性javabean和jsp连接数据库操作
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13862313.html
Copyright © 2011-2022 走看看