题目描述:
题目链接:
https://www.acwing.com/problem/content/192/
思路:
这个题是要求“最小步数”,比较容易想到是用BFS来进行搜索,但是直接BFS的话状态数太多了,时间复杂度会到:,其中L是字符串的长度,N是一个字符串的可能变换到的后继字符串数。肯定会超时。
因此,本题使用了“双向搜索”的技巧,i.e. 分别从起点和终点向中间进行搜索,如果搜到了“公共点”,那这个公共点就是答案。 使用双向搜索的时间复杂度是:
在具体实现的时候,使用了一些实现技巧(需要注意!):
1. 优先从队列比较小的那个方向进行搜索
2. 当一个方向搜索完了,还没有搜到和另一个方向的公共点时,就直接结束,此时一定无解了ÿ