zoukankan      html  css  js  c++  java
  • Word Ladder 分类: Leetcode(广度优先搜索) 2015-04-22 09:49 39人阅读 评论(0) 收藏

    Word Ladder

    Given two words (beginWord and endWord), and a dictionary, find the length of shortest transformation sequence from beginWord to endWord, such that:

    1. Only one letter can be changed at a time
    2. Each intermediate word must exist in the dictionary

    For example,

    Given:
    start = "hit"
    end = "cog"
    dict = ["hot","dot","dog","lot","log"]

    As one shortest transformation is "hit" -> "hot" -> "dot" -> "dog" -> "cog",
    return its length 5.

    Note:

    • Return 0 if there is no such transformation sequence.
    • All words have the same length.
    • All words contain only lowercase alphabetic characters.

    class Solution {
    public:
        int ladderLength(string start, string end, unordered_set<string> &dict) {
            if(start.size() != end.size()) return 0;
            if(start.empty() || end.empty()) return 0;
            
            queue<string> path;
            path.push(start);
            int level = 1;
            int count = 1;
            dict.erase(start);
            while(dict.size() >0 && !path.empty()) {
                string curword = path.front();
                path.pop();count--;
                for(int i = 0; i < curword.size(); i++) {
                    string tmp = curword;
                    for( char j = 'a'; j <= 'z';j++){
                        if(tmp[i] == j) continue;
                            tmp[i] =j;
                        if(tmp == end) return level+1;
                        if(dict.find(tmp) != dict.end()) path.push(tmp);
                        dict.erase(tmp);
                    } 
                }
                
                if(count == 0) {
                    count = path.size();
                    level ++;
                }
            }
            
            return 0;
        }
    };


     

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    java代码读取yarn聚合目录日志
    Java内存区域的划分和异常
    Hbase restFul API
    Sql Server函数全解(一)字符串函数
    Sql Server之数据类型详解
    Sql Server之使用T_SQL创建,修改,查看数据库信息
    《Java编程思想》笔记 第一章 对象导论
    spring之Autowire
    spring之scope作用域
    spring之注入类型
  • 原文地址:https://www.cnblogs.com/learnordie/p/4656930.html
Copyright © 2011-2022 走看看