当前位置: 首页 > article >正文

18502 字符串哈希匹配字符串

18502 字符串哈希匹配字符串

⭐️难度:中等
🌟考点:字符串hash
📖
在这里插入图片描述

📚

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {
    static int MOD = 1000000007;
    static int p = 131;

    static long[] b = new long[200005];
    static long[] h = new long[200005];
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int q = sc.nextInt();

        String str = " " + sc.next();

        // hash
        b[0] = 1;
        for (int i = 1; i <= n; i++) {
            b[i] = b[i - 1] * p % MOD;
            h[i] = (h[i - 1] * p + str.charAt(i) - 'a') % MOD;
        }
        while(q-->0){
            int l1 = sc.nextInt();
            int r1 = sc.nextInt();
            int l2 = sc.nextInt();
            int r2 = sc.nextInt();
            String res = getHash(l1,r1) == getHash(l2,r2) ? "Yes" : "No";
            System.out.println(res);
        }
    }
    static long getHash(int l ,int r){
        return ((h[r] - h[l - 1] * b[r - l + 1]) % MOD + MOD) % MOD;
    }
}

🍎笔记
在这里插入图片描述

((h[r] - h[l - 1] * b[r - l + 1]) % MOD + MOD) % MOD:为了避免取模结果为负数,先对结果取模,再加上 MOD,最后再取模。


http://www.kler.cn/a/610259.html

相关文章:

  • CF254B Jury Size
  • 备赛蓝桥杯之第十六届模拟赛2期职业院校组第六题:菜谱教程
  • ngx_http_core_root
  • ngx_http_core_error_page
  • 回退N帧协议(GBN)有差错情况下的详细流程
  • Unity2D 五子棋 + Photon联网双人对战
  • Android系统的安全问题 - Linux的能力模型(Capability)和 SELinux 的区别
  • Checksum方法实现
  • DDR4、DDR5、固态硬盘(SSD)和机械硬盘(HDD)在连续读/写、随机读/写性能的对比分析
  • Softmax 回归 + 损失函数 + 图片分类数据集
  • 重生细胞全符文获取攻略
  • LangChain4j(1):初识LangChain4j
  • 3. 轴指令(omron 机器自动化控制器)——>MC_GearInPos
  • Open CASCADE学习|根据给定的点集拟合一条B样条曲线
  • MATLAB导入Excel数据
  • 【论文精读-图像恢复】 All-In-One Image Restoration for Unknown Corruption
  • Kotlin 协程官方文档知识汇总(二)
  • MySQL 和 Redis 数据一致性解决方案
  • 字节码生成技术
  • springboot启动事件CommandLineRunner使用