BF算法(Brute Force)
从字符串主S中查找到字符串T的位置。每次一个字符串的对比,若相等,则继续查找后面的字符串。不相等,则从S的下一个字符串继续查找。最后找不到,则返回了-1,否则返回T在S中的开发位置。
下面是PHP的实现:
01 | <?php |
02 | function index( $str , $reg , $startPos = 0) { |
03 | $strArr = str_split ( $str ); |
04 | $regArr = str_split ( $reg ); |
05 |
06 | if ( $startPos >= count ( $strArr )) { |
07 | return -1; |
08 | } |
09 |
10 | $i = $startPos ; |
11 | $j = 0; |
12 |
13 | while ( $i < count ( $strArr ) && $j < count ( $regArr )) { |
14 | if ( $strArr [ $i ] == $regArr [ $j ]) { |
15 | $i ++; |
16 | $j ++; |
17 | } else { |
18 | $i = $i - $j + 1; |
19 | $j = 0; |
20 | } |
21 |
22 | if ( $j >= count ( $regArr )) |
23 | { |
24 | return $i - count ( $regArr ); |
25 | } |
26 | } |
27 |
28 | return -1; |
29 | } |
30 |
31 | $str = "abdsfasjdkfl" ; |
32 | $reg = "dkfl" ; |
33 | print_r(index( $str , $reg , 9)); |