“每天都有很多动物在道路上遭遇车祸”,科勒文从口袋里掏出一叠照片。
“这里是我的一些现场记录”,他拿给杨成看。
“你看,这里有一个像是鬣狗(hyena)的事故现场”,科勒文解说道。
“==========h===yyyyyy===eeee=n==a========”
“有着长长的黑白相间斑点的可能是只企鹅(penguin)”,科勒文指着另外一张照片。
“======pe====nnnnnn=======================n=n=ng====u==iiii=iii==nn========================n=”
“刚才那只碰上大货车的倒霉的棕熊(bear),被碰得换了个方向”。
“=====r=rrr=rra=====eee======bb====b=======”
“你可能注意到了,这些动物的身体并不是连续的,有的散落一地,有的方向都是反的”。
“即使是像我这样的专业人士,识别起来也不是件容易的事儿”。
“Alex”,科勒文看着杨成,眼中充满了希冀。
“我真的需要一个程序,可以帮我识别这些图片中的动物”。
“别急,我的朋友,让我先想想”,杨成在道路两侧踱起了步。
首先,肯定需要一个列表,里面有所有常见动物的名称,暂时命名为常量ANIMALS。
接着,对事故现场的字符串进行分析。
很明显,死掉的动物有两个方向,一正一反两种可能,因此匹配的时候要注意这两种情况。
然后,对字符串内容进行分析,因为有很多重复的字符,所以不能直接将字符串和ANIMALS列表内容做匹配。
先将字符串里面的字母过滤出来,维持之前的顺序,命名为unknown,它不会有等号来干扰。
然后遍历ANIMALS列表,如果当前列表内容是unknown字符串的子序列,而且当前列表内容和unknown字符串所拥有的字母是一致的,那就说明当前列表内容(当前动物名称)是正确的。
比如说,上面的鬣狗(hyena)字符串,提取出所有字母,得到“hyyyyyyeeeena”。
“hyena”是“hyyyyyyeeeena”的子序列,而且它们都拥有“h”,“y”,“e”,“n”,“a”五种字母,所以可以认定,这种动物是鬣狗。
值得注意的是,对上面倒霉的棕熊的匹配必须将unknown字符串翻转过来,因为它方向是反的。
“兄弟,写好了,拿去用吧~”,杨成拍了拍科勒文的肩膀。
“叮!恭喜您完成了相关任务!”
“当前积分126分,击败了全球41%的玩家,请您再接再厉!”