Kata19:程序员的事。。。能叫偷懒吗

Kata19

好吧,我承认,这次我偷懒了。

这个Kata要做的是单词变换,输入两个单词,输出最小变换次数。

看例子:

输入:cat dog

输出:3

具体的变换过程:

cat
cot
cog
dog

每次变换只能改变一个字母,变换后必须也是一个合法单词。

之所以偷懒,是因为我发现这次真的是一个纯算法题,我对纯算法一向兴趣不大,所以就没有写。不过简单说下思路吧:

思路

既然要输出最小变换次数,那无非就是深搜和广搜了。单词长度有限,变换次数应该不会太多,所以方案是广搜。

搜索之前需要先生成图,每个节点是一个单词,每条边表示这个单词经过一次变换可以到达另一个单词,所以构造图需要O(n2)的时间。搜索的话复杂度是O(n),所以总复杂度还是O(n2),如果能提前构造好图,那会快很多。

至于优化,广搜没什么好优化的,第一个找到的肯定就是最短路径。

大概就是这样,写完想想似乎难度也不大, 就是遍历生成图,然后标准广搜即可,注意处理无限循环。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,376评论 25 709
  • 本系列第三篇,承接前面的《浅谈机器学习基础》和《浅谈深度学习基础》。 自然语言处理绪论 什么是自然语言处理? 自然...
    我偏笑_NSNirvana阅读 18,337评论 2 68
  • 原型 原型本身是一个对象,这个对象的属性与方法可供其他对象访问。 任何对象都有成为原型的潜质,下面的代码就让obj...
    何必处处示弱阅读 3,064评论 0 1
  • 今天虽然很不方便,我还是一清早就把家里睡得迷糊的金丝熊(小仓鼠)拎着,小跑着去坐公交,转公交带到单位。我这样迫不及...
    心花朵朵阅读 4,890评论 2 1

友情链接更多精彩内容