字符串匹配之RK算法

RK算法是一种字符串匹配方法,依赖于哈希计算。若哈希值不同,则字符串必然不同;若哈希值相同,仍需进一步比对,避免误判。然而,频繁的哈希冲突可能导致效率降低,严重时会变成暴力匹配的BF算法。
摘要由CSDN通过智能技术生成

RK算法是基于hash的,如果两个字符串hash后的值不相同,则它们肯定不相同;如果它们hash后的值相同,它们不一定相同。

缺点:RK成也hash,败也hash。每一次hash冲突都要遍历一次字符串,当冲突很多很多的时候,RK算法就会退化成BF算法(BF算法就是对字符串逐一比较,每次匹配不成功就重新开始下一次匹配)。

import java.util.Scanner;

//字符串匹配,主串str,样式串sam_str,返回sam_str在str第一次出现的位置,否则返回-1
public class Main {
   
    public static int pipei(String str,String sam_str) throws Exception{
   
        if (str.trim().isEmpty() || sam_str.trim().isEmpty()){
   
            new Exception("主串或样式串为空");
        }
        int n = str.length();//主串长度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值