1. 程式人生 > >資料結構-串- BF(樸素)演算法

資料結構-串- BF(樸素)演算法

時間複雜度: O(nm) ;

需求:解決字串主串是否包含子串的問題;

思路:採用雙指標;主串i 字串 j 當i與j相同時 i++,j++,如不同,j=0; i回退上次開始比較的的位置+1 匹配成功返回第一個字元的下標;

class BF{
        public static  int  bf(String str,String sub){
                   int i=0;
                   int j=0;
                   while(i<str.length()&&j<sub.length()){
                            if(str.charAt(i)==sub.charAt(j)){
                                i++;
                                j++;
                            }else{
                                i=i-j+1; //回退到i上次比較起始位置+1;
                                j=0;
                            }
                   }
                   if(j==sub.length()){
                       return i-j ; //找到返回下標
                   }
                   return -1;
        }
}