Lintcode120 Word Ladder solution 题解

【题目描述】

Given two words (startandend), and a dictionary, find the length of shortest transformation sequence fromstarttoend, such that:

1.Only one letter can be changed at a time

2.Each intermediate word must exist in the dictionary

给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列

比如:

1.每次只能改变一个字母。

2.变换过程中的中间单词必须在字典中出现。

【注】1、如果没有转换序列则返回0。

2、所有单词具有相同的长度。

3、所有单词都只包含小写字母。

【题目链接】

www.lintcode.com/en/problem/word-ladder/

【题目解析】

这道题是套用BFS同时也利用BFS能寻找最短路径的特性来解决问题。

把每个单词作为一个node进行BFS。当取得当前字符串时,对他的每一位字符进行从a~z的替换,如果在字典里面,就入队,并将下层count++,并且为了避免环路,需把在字典里检测到的单词从字典里删除。这样对于当前字符串的每一位字符安装a~z替换后,在queue中的单词就作为下一层需要遍历的单词了。

正因为BFS能够把一层所有可能性都遍历了,所以就保证了一旦找到一个单词equals(end),那么return的路径肯定是最短的。

【参考答案】

www.jiuzhang.com/solutions/word-ladder/




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值