程序员面试金典 - 面试题 17.22. 单词转换(BFS)

1. 题目

给定字典中的两个词,长度相等。
写一个方法,把一个词转换成另一个词, 但是一次只能改变一个字符。
每一步得到的新词都必须能在字典中找到。

编写一个程序,返回一个可能的转换序列。如有多个可能的转换序列,你可以返回任何一个。

示例 1:
输入:
beginWord = "hit",
endWord = "cog",
wordList = ["hot","dot","dog","lot","log","cog"]
输出:
["hit","hot","dot","lot","log","cog"]示例 2:
输入:
beginWord = "hit"
endWord = "cog"
wordList = ["hot","dot","dog","lot","log"]
输出: []
解释: endWord "cog" 不在字典中,所以不存在符合要求的转换序列。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/word-transformer-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 126. 单词接龙 II(图的BFS)
LeetCode 127. 单词接龙(图的BFS/双向BFS)

  • 广度优先搜索
class Solution {
public:vector<string> findLadders(string beginWord, string endWord, vector<string>& wordList) {vector<string> ans, frontPath, newpath;int len = wordList.size(), i, k, n, lv = 0;unordered_map<string,int> m;vector<bool> visited(len,false);for(i = 0; i < len; ++i){m[wordList[i]] = i;if(wordList[i] == beginWord)visited[i] = true;}if(m.find(endWord) == m.end())return {};queue<vector<string>> q;frontPath.push_back(beginWord);q.push(frontPath);string str;while(!q.empty()){lv++;n = q.size();while(n--){frontPath = q.front();q.pop();for(i = 0; i < beginWord.size(); ++i){//对每个单词的每个字符进行改变str = frontPath.back();for(k = 1; k <= 25; ++k){str[i] += 1;if(str[i] > 'z')str[i] = 'a';if(m.find(str) != m.end() && !visited[m[str]]){	//在集合中,且没有访问的newpath = frontPath;newpath.push_back(str);q.push(newpath);visited[m[str]] = true;if(str == endWord)return newpath;}}}}}return {};}
};

308 ms 19.4 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成功:选择比努力更重要,智慧比勤奋更重要

人生三句话&#xff1a; 1、想要什么&#xff0c;比做什么更重要&#xff1b; 2、选择比努力更重要&#xff1b; 3、智慧比勤奋更重要&#xff1b;信息时代的财富&#xff0c;蕴藏在哪里&#xff1f;农业时代财富&#xff0c;蕴藏在土地&#xff0c;谁拥有土地&…

OpenAI新模型惊艳了!对话问答能力逆天

编&#xff5c;昕朋 Aeneas源&#xff5c;新智元OpenAI新模型来了&#xff01;全新对话模型ChatGPT&#xff0c;可以回答用户问题&#xff0c;还能挑出问题的错误之处。面对不懂的问题&#xff0c;还会承认错误并拒绝回答&#xff01;当人们翘首期待GPT-4时&#xff0c;OpenAI在…

程序员面试金典 - 面试题 17.17. 多次搜索(Trie树)

文章目录1. 题目2. 解题2.1 暴力超时2.2 Trie树1. 题目 给定一个较长字符串big和一个包含较短字符串的数组smalls&#xff0c;设计一个方法&#xff0c;根据smalls中的每一个较短字符串&#xff0c;对big进行搜索。 输出smalls中的字符串在big里出现的所有位置positions&#…

雅虎的Mash-up 之路

当今的互联网&#xff0c;每天都会冒出许多的新产品、新技术、新概念&#xff0c;越来越多的Web N.0已经让我们看得眼花缭乱。现在业界对Mash-up有个比较统一的定义&#xff1a;Mash-up 模式指的是网站采用混合技术搭建&#xff0c;不同的功能模块与不同的外界API接口对接实现。…

python读单行文本求平均值_如何从文本文件python中的数字列表中找到平均值

在文本文件中&#xff0c;有一个名称列表&#xff0c;旁边有一个数字&#xff0c;表示他们在本例中的分数。有没有办法计算出文本文件中所有数字的平均值。在 代码&#xff1a;print("average calculator") option input("option: ") option_class input…

把狗画成擦边猛男,「AI绘画」能有多离谱?

文&#xff5c;哈哈哈波特源&#xff5c;知乎一个AI绘画小程序日增用户65.7万人&#xff0c;一周内突破100万&#xff0c;这个增长速度也算是一夜爆红了&#xff0c;AI画作一时间在朋友圈传得沸沸扬扬&#xff0c;不仅如此&#xff0c;还迅速引起一波短视频热潮&#xff0c;相关…

程序员面试金典 - 面试题 16.03. 交点(数学)

1. 题目 给定两条线段&#xff08;表示为起点start {X1, Y1}和终点end {X2, Y2}&#xff09;&#xff0c;如果它们有交点&#xff0c;请计算其交点&#xff0c;没有交点则返回空值。 要求浮点型误差不超过10^-6。若有多个交点&#xff08;线段重叠&#xff09;则返回 X 值最…

终结1.x时代,PyTorch 2.0来了!100%向后兼容,一行代码将训练提速76%

源&#xff5c;机器之心PyTorch 官方&#xff1a;我们这次的新特性太好用了&#xff0c;所以就直接叫 2.0 了。前段时间&#xff0c;PyTorch 团队在官方博客宣布 Pytorch 1.13 发布&#xff0c;包含 BetterTransformer 稳定版等多项更新。在体验新特性的同时&#xff0c;不少人…

python randint什么分布_python随机数分布random测试

因为概率问题&#xff0c;所以需要测试一下python的随机数分布。到底是平均&#xff08;均匀&#xff09;分布&#xff0c;还是正态&#xff08;高斯&#xff09;分布。 测试代码如下&#xff1a; #! /usr/bin/env python #codingutf-8 # # Describe : 测试random随机数分布 #…

LeetCode 1408. 数组中的字符串匹配(暴力查找)

1. 题目 给你一个字符串数组 words &#xff0c;数组中的每个字符串都可以看作是一个单词。请你按 任意 顺序返回 words 中是其他单词的子字符串的所有单词。 如果你可以删除 words[j] 最左侧和/或最右侧的若干字符得到 word[i] &#xff0c;那么字符串 words[i] 就是 words[…

逻辑性不好可以学python吗_如果本文若未能让你学会“Python”,可能真的不适合学习Python...

很多小伙伴们会问学习Python难学吗&#xff1f; python就是以他简单易学出名的。几乎是现在最简单&#xff0c;却可塑性最高的语言了。一般有其它编程语言基础的&#xff0c;自学&#xff0c;三小时左右就能学会。现在Python都有给小朋友的教程&#xff0c;简单程度可见一般。 …

意外地调用了方法或属性访问

我使用JAVASCRIPT动态创建HTML中的元素居然提示&#xff0c;“意外地调用了方法或属性访问”我的方法:function appendTag(element){var f document.createElement("font");f.setAttribute("style","color:red");var text document.createText…

谷歌要完,百度也危了

文 | 天于刀刀当我们在抱怨搜索引擎的时候我们具体在说些什么&#xff1f;也许是饱受诟病的广告&#xff1f;或者是不合理的网页排序&#xff1f;又或是一种最直观的感觉——不好使。但是从来没有人抱怨过搜索引擎这一个模式。尽管这些年&#xff0c;也诞生一些诸如Magi这样让人…

LeetCode 1409. 查询带键的排列(map模拟)

1. 题目 给你一个待查数组 queries &#xff0c;数组中的元素为 1 到 m 之间的正整数。 请你根据以下规则处理所有待查项 queries[i]&#xff08;从 i0 到 iqueries.length-1&#xff09;&#xff1a; 一开始&#xff0c;排列 P[1,2,3,…,m]。对于当前的 i &#xff0c;请你找…

根据年月日计算是星期几的函数,基姆拉尔森计算公式

算法如下&#xff1a; 基姆拉尔森计算公式W (d2*m3*(m1)/5yy/4-y/100y/400) mod 7 在公式中d表示日期中的日数&#xff0c;m表示月份数&#xff0c;y表示年数。 注意&#xff1a;在公式中有个与其他公式不同的地方&#xff1a; 把一月和二月看成是上一年的十三月和十四月&#…

centos7 如何安装部署k8s_如何在centos7上安装FreeIPA的客户端

1.文档编写目的在前面的文章《如何在Redhat7上安装FreeIPA》介绍了FreeIPA的安装及使用&#xff0c;本篇文章主要介绍如何在RedHat7上安装FreeIPA的客户端并配置。 2.内容概述1.环境准备2.安装FreeIPA客户端及使用3.总结及异常处理 3.测试环境1.centos 7.62.FreeIPA4.6.44.环境…

何恺明新作来了!更快更有效的训练FLIP

文 | Random源 | AIWalkerpaper&#xff1a;https://arxiv.org/abs/2212.00794本文提出一种用于训练CLIP的简单而有效的方案FLIP(Fast Language-Image Pre-training, FLIP),它在训练过程中对图像块进行大比例的随机Mask移除。Mask机制使得我们可以在有限周期内学习到更多的imag…

LeetCode 1410. HTML 实体解析器(哈希map)

1. 题目 「HTML 实体解析器」 是一种特殊的解析器&#xff0c;它将 HTML 代码作为输入&#xff0c;并用字符本身替换掉所有这些特殊的字符实体。 HTML 里这些特殊字符和它们对应的字符实体包括&#xff1a; 双引号&#xff1a;字符实体为 &quot; &#xff0c;对应的字符…

json和python中字典的区别和联系_Python 中json与字典的关系

Python开发中字典和 json的概念区别&#xff1a; json.dumps( dict )    字典变为字符 json.loads( jsoninput )    字符变为字典 一、字典 字典是一种数据结构&#xff0c;而json是一种数据格式,格式就会有一些形式上的限制&#xff0c;比如json的格式要求必须且只能使…

windows核心编程学习笔记(八)结构化异常处理(Structured Exception Handling)

首先要要知道&#xff0c;结构化异常处理(SEH)和C提供的异常处理不相同。一.Termination HandlersTermination Handlers使用很简单。在想使用SEH处理的地方使用__try{/* [__leave;] */}__finally{/* [AbnormalTermination] */}即可。SEH保证&#xff0c;无论__try中的代码怎样退…