如何高效快速的找出一个字符串中有多少个以指定字母开头的子串


如何高效快速的找出一个字符串中有多少个以指定字母开头的子串,当遇到第二次出现此字符时结束本次查找(包括结果需要原字符串),当出现其它非字母的字符时,也停止本次查找,最后得出来的结果需要排重。
例如:
原字符串:afdda@fvfdaqq5afavt
查找字符:f
结果应该有:

   
  f
  
fd
fdd
fdda

fv
fd
fda
fdaq
fdaqq

fa
fav
fat

求一个高效算法。

c php 算法

小小小豆梓 13 years, 3 months ago
   
  $a='afdda@fvfdaqq5afavt';
  
$tmp1=strpos($a,'f');
while(substr($a,$tmp1,1)=='f'){
$i=$tmp1;
++$tmp1;
while(substr($a,$tmp1,1)!='f'&&substr($a,$tmp1,1)){
if(preg_match('/[^a-z]{1}/',substr($a,$tmp1,1))){
$tmp1=strpos($a,'f',$tmp1);
break;
}
echo substr($a,$i,$tmp1-$i+1).'<br/>';
++$tmp1;
}

}

好男人聂小帅 answered 13 years, 3 months ago

Your Answer