首页 > 其他分享 >哈希处理字符串(模板)

哈希处理字符串(模板)

时间:2024-07-05 18:55:50浏览次数:19  
标签:cout r2 int cin 哈希 字符串 find 模板

841. 字符串哈希 - AcWing题库

#include<bits/stdc++.h>
using namespace std;
#define int  long long
#define endl '\n'
const int N=1e5+10;
int p=131;//13331
int  P[N],h[N];//P存的是p的k次方,h存字符串前k个数(换化成ascll码)

int  find(int l,int r)
{
    return h[r]-h[l-1]*P[r-l+1];//返回l~r之间的值 
}



signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    
    int n,m;
    cin>>n>>m;
    string s;
    P[0]=1;
    h[0]=0;//初始化 
    cin>>s;
    for(int i=0;i<n;i++)
    {
        P[i+1]=P[i]*p;//存p的i次方 
        h[i+1]=h[i]*p+s[i];//存哈希值 
        
    }
    while(m--)
    {
        int l1,r1,l2,r2;
        cin>>l1>>r1>>l2>>r2;
        if(find(l1,r1)==find(l2,r2))
        cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
      
      
    
    
    
}

标签:cout,r2,int,cin,哈希,字符串,find,模板
From: https://blog.csdn.net/hui_le4/article/details/140176801

相关文章

  • 二分模板及其原理
    直接上代码#include<bits/stdc++.h>usingnamespacestd;//#defineintlonglong//防止越界//#defintdoublelongdouble//防止越界constintL=0,R=1e9+1;//整数二分边界//constdoubleL=0,R=1e9+1;//实数二分边界constdoubleEPS=1;......
  • C#的学习基础篇(3)——字符串的常见方法
    目录1.字符串的常见方法    1.1Format         1.2IsNullOrEmpty        1.3IsNullOrWhiteSpace        1.4Equals        1.5Contains        1.6Length        1.7 Substring        1.8......
  • 字符串习题-金额转换
    金额转换importjava.util.Scanner;publicclass统计金额{/*把数字转换成繁体字,一共7位数,数字前面补零。查表法思想!!!例如:2135↓转繁体字贰壹叁伍↓前面补0零零零贰壹叁伍↓插入单位零佰零拾零万贰壹......
  • VBA常用的字符串内置函数
    前言在VBA程序中,常用的内置函数可以按照功能分为字符串函数、数字函数、转换函数等等,本节主要会介绍常用的字符串的内置函数,包括Len()、Left()、Mid()、Right()、Split()、String()、StrConV()等。本节的练习数据表以下表为例:1.使用Len()计算字符串长度示例:Sheet1的A......
  • python学习之字符串
    (一)表示方式:一对单影号或一对双影号:常用于单行字符串一对三影号(可双可单):常用于多行字符串,不用于给变量赋值时可作多行注释用字符串不可变,不能像列表一样修改其中某个元素,任何对是字符串的修改实际就是生成了一份新数据。(二)转义符\反斜杠(也是windows中路径分隔符,unix中路径分......
  • 基于Go1.19的站点模板爬虫
    要基于Go1.19创建一个站点模板爬虫,你可以使用Go语言的标准库和一些第三方库(如colly或goquery)来实现网页抓取和解析。以下是一个简单的示例,展示了如何使用colly库编写一个站点模板爬虫:安装Colly库:首先,确保你已经安装了Go,并设置好了Go的工作环境。然后使用以下命令安装col......
  • c++类模板及应用
    文章目录为什么要有函数模板一般实现举例类模板举例继承中类模板的使用特殊情况友元函数模板类和静态成员类模板实践为什么要有函数模板项目需求:实现多个函数用来返回两个数的最大值,要求能支持char类型、int类型、double一般实现举例类模板举例继承中类模......
  • 代码随想录算法训练营第八天|344.反转字符串、541.反转字符串Ⅱ、54.替换数字(卡码网
    344简单写个循环1classSolution{2public:3voidreverseString(vector<char>&s){4chartmp;5intlen=s.size();6for(inti=0;i<len/2;i++){7tmp=s[i];8s[i]=s[len-......
  • 代码随想录算法训练营第九天|151.反转字符串中的单词、55.右旋字符串、28.找出字符串
    151以前写过很呆的写法但能用嘿1classSolution{2public:3stringreverseWords(strings){4//初始化变量5vector<vector<int>>data;//存储单词的起始地址和长度6stringans;//最终结果字符串7intnum=0;......
  • P5854 【模板】笛卡尔树
    原题链接题解笛卡尔树的定义如下:任意一颗子树都代表一段连续的区间,且子树的根节点是该区间的最大值,根的左边的元素下标均比根小(二叉搜索树性质),子节点均比父节点大(堆的性质)我们讲如何实现的设即将要插入的元素为\(a_i\)栈内的元素为前\(i-1\)个元素构成的笛卡尔树从根一直......