小例子-理解高效BM算法字符串如何比较是否相等

博客通过一个小例子解释了BM算法如何高效地比较两个字符串是否相等。内容描述了如何将待查找字符串与主字符串进行逐字符比较,并在不匹配时通过跳过部分字符来提高效率。文中强调了charAt()方法的应用,并指出使用字符数组可能更为合适。
摘要由CSDN通过智能技术生成

字符串比较非常好理解,比如有一个字符串"abcacabdc" ,我们需要查找里边是否包含"abd"这个字符串

我们把"abcacabdc" 分别放到主数组中,把"abd"放到查找数组中如下图所示。

 

 

好了只要我们用一个循环一次次比较,一次次位移就可以。 比如 abc 先和abd比较 一个一个字符比较 然后 在bca和abd,依次类推。

我们看一下代码,可以跑一下

注意:这里边我们正常应该是把字符串放到一个字符串数组中,但是我们没有这样做,而直接用字符串charAt()方法道理一样。

应该放到字符数组中比较合适。

  public static void main(String[] args) {
        String leadstr = "abcacabdc";
        String target = "abd";
        System.out.println(indexOf(leadstr, target));

    }

    /**
     * 构建一个散列表256位的包括所有字母的ASCII字母
     */
    private static final int ASCIISIZE = 256;

    static int indexOf(String leadstr, String target) {
        int leadLeng = leadstr.length();
        int targetLeng = target.length();
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值