433. 最小基因变化
问题
基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是 'A'、'C'、'G' 和 'T' 之一。
假设我们需要调查从基因序列 start 变为 end 所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。
例如,"AACCGGTT" --> "AACCGGTA" 就是一次基因变化。
另有一个基因库 bank 记录了所有有效的基因变化,只有基因库中的基因才是有效的基因序列。
给你两个基因序列 start 和 end ,以及一个基因库 bank ,请你找出并返回能够使 start 变化为 end 所需的最少变化次数。如果无法完成此基因变化,返回 -1 。
注意:起始基因序列 start 默认是有效的,但是它并不一定会出现在基因库中。
思路
广搜的变种,下一步就是bank中的一个,判断是否合法,即是否被标记过,并且下一步和当前是不是只差一个字母
这里判断合法的过程中,如果为一,说明是起点那个点,标记为一,不合法
当与终点相等的时候记录下步数,pop,继续下一个点,最后返回最少步数。