Java模拟字符串暴力匹配算法(BF算法)

最近刚好再看数据结构与算法,就照着视频里的还原了一下,只不过要注意的是这里数组的下标是从开始的


/**
 * 使用java模拟暴力匹配算法
 * @author HuangSir
 * @create 2021-05-15 8:46
 */

public class 暴力匹配模拟 {
   public static void main(String[] args) {
      String s="aaaaab";
      String t = "aaab";
      System.out.println("子串第一个字符所在下标为"+getIndex(s, t));
   }
   public static   int getIndex(String s,String t){
      //定义两个指针
      int i=0;
      int j=0;
      while (i<s.length()&&j<t.length()){//当两个指针都没有超过对应主串/子串的长度时
         if (s.charAt(i)==t.charAt(j)){//如果两个位置上的字符相等,就往后继续判断
            i++;
            j++;
         }else {//如果有不相等的则
            i=i-j+1;//外层指针回溯
            j=0;//内层指针归0
         }
      }
      //跳出循环的条件是i或者j的其中一个全部扫描完(超出长度)
      if(j>=t.length()){//如果j超出了子串的长度,说明子串全部匹配上了主串
         return i-t.length();
      }else {
         return 0;
      }
   }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值