2019-10-12 吴亲库里 库里的深夜食堂
说实话这道题一开始没明白是什么意思。所有的DNA都是A,C,G,T组成。写一个函数找出所有出现超过一次的10个字符长串,提取关键字,超过一次,10个字符长串。
我这里并没有使用高级点的位运算。而是很暴力的就像滑动窗口一样,每次向右划一个身位,然后截取10个字符串。没有出现过的就存在数组中,数组中已存在的说明出现至少超过一次,放在最后的结果中,很好理解吧
/**
* @param String $s
* @return String[]
*/
function findRepeatedDnaSequences($s) {
$sub=[];
$res=[];
$len=strlen($s);
for($i=0;$i<$len-9;$i++){
$temp=substr($s,$i,10);
if(!isset($sub[$temp])){
$sub[$temp]=1;
}elseif($sub[$temp]==1){
$res[]=$temp;
$sub[$temp]+=1;
}
}
return $res;
}