leetcode — Word Ladder

leetcode — Word Ladder

爱情也有好赖,决不能草率,我是愿意等待,哪怕青春不再

 [问题描述]

Given two words (start and end), and a dictionary, find the length of shortest transformation sequence from start to end, 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.

[解题思路]

BFS经典场景

 1 int Solution::ladderLength(std::string start, std::string end, std::tr1::unordered_set<std::string> &dict)
 2 {
 3     std::queue<std::pair<std::string, int> > bfs;
 4     std::tr1::unordered_set<std::string> path;
 5     path.insert(start);
 6     bfs.push(std::make_pair(start, 2));
 7     while(!bfs.empty()){
 8         std::string tmp = bfs.front().first;
 9         int num = bfs.front().second;
10         for (int i = 0; i < tmp.length(); i ++){
11             tmp = bfs.front().first;
12             for(char ti = 'a'; ti <= 'z'; ti ++){
13                 tmp[i] = ti;
14                 if (tmp == end)
15                     return num;
16                 if (dict.find(tmp) != dict.end() && path.find(tmp) == path.end()){
17                     bfs.push(std::make_pair(tmp, num + 1));
18                     path.insert(tmp);
19                 }
20             }
21         }
22         bfs.pop();
23     }
24     return 0;
25 }

 

转载于:https://www.cnblogs.com/taizy/p/3910818.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109754.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea激活吗【2021免费激活】「建议收藏」

    (idea激活吗)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月29日
    50
  • Linux下netstat命令详解

    Linux下netstat命令详解一、介绍Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 二、输出信息描述执行netstat后输出如下:[root@sy-suz-srv51~]#netstatActiv…

    2022年5月7日
    44
  • 学计算机编程应该先学什么,如何自学计算机编程,学编程应该先学什么

    学计算机编程应该先学什么,如何自学计算机编程,学编程应该先学什么我以前学过但后来放弃了我可以给你点建议希望对你有用!!1.编程一般来说还是先学C语言,其实你不学C直接学C++也行,因为在C++中也包含很多C语。。但是我还是建议先学c.虽然要多花点时间但是对你以后过渡到C++和理解一些编程的基础知识,基本概念是很有好处的。学好了C之后就可以选择学java,c++,C#等。。。虽然语言多,但是他们都基于C只是有些地方不同,你可以根据你的就业方向选择一门学精,一…

    2022年6月16日
    57
  • intellij idea 2022.01激活码【2022.01最新】

    (intellij idea 2022.01激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月1日
    197
  • 基于全卷积神经网络的图像分割方法详解(二)

    基于全卷积神经网络的图像分割方法详解(二)最近这段时间刚好忙完学业作业,抽空来总结一下前段时间的工作。前段时间一直忙于用深度学习做医学图像分割,采用的方法是FCN,也就是全卷积神经网络。全卷积神经网络是基于卷积神经网络的改进,使得输入和输出的尺寸一致,并且对每个像素点进行分类,达到图像分割的目的。下图是全卷积神经网络的流程图。其中第一行是提取特征步骤,然后2Xconv7和4Xconv7分别表示对conv7的输出进行2倍和4倍上采样…

    2022年6月19日
    36
  • python 匹配文本全角转半角字符「建议收藏」

    python 匹配文本全角转半角字符「建议收藏」在对文本进行处理的时候经常会遇见要对括号和标点进行匹配常见的英文(半角)符号如()直接用正则匹配即可但是遇见全角字符(中文括号、标点),直接用正则匹配会存在问题:因为编码通常为为utf8,若直接匹配,中文括号的3字节编码会和一些中文的字节编码重复,产生意想不到的结果若用decode转为unicode编码,则可避免产生错误结果,但也无法直接用正则匹配到经过试验,发现一个看上去

    2022年7月15日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号