首页 > 其他分享 >字符串哈希

字符串哈希

时间:2023-08-11 17:46:16浏览次数:51  
标签:1000010 const int scanf 哈希 字符串

没有模的版本


const int N = 1000010 ;
const int m = 131 ;
const int mod = 1e9 + 7 ; 

int n, T ;
char s[N] ;
int f[N], p[N] ;

int main() {
	scanf("%s", s + 1) ; n = strlen(s + 1) ;
	p[0] = 1 ;
	for (int i = 1; i <= n; i++) {
		f[i] = f[i - 1] * m + s[i] - 'a' + 1 ;
		p[i] = p[i - 1] * m;
	}
	scanf("%d", &T) ;
	while (T--) {
		int a, b, c, d ; scanf("%d%d%d%d", &a, &b, &c, &d) ;
		if (f[b] - f[a - 1] * p[b - a + 1] == f[d] - f[c - 1] * p[d - c + 1]) puts("Yes") ;
		else puts("No") ; 
	}
}

标签:1000010,const,int,scanf,哈希,字符串
From: https://www.cnblogs.com/lighthqg/p/17623598.html

相关文章

  • 某公司笔试题 - 计算字符串最后一个单词的长度(附python代码)
    题目:计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000(字符串末尾不变以空格未结尾)。python代码:str=input("请输入一个字符串:")iflen(str)<5000andlen(str)>0:#去掉字符串前后的空格s=str.strip("")#已空格为标记,对字符串切片......
  • 开心档之TypeScript String(字符串)
    TypeScriptString(字符串)目录TypeScriptString(字符串)语法String对象属性String方法String对象用于处理文本(字符串)。语法vartxt=newString("string");或者更简单方式:vartxt="string";String对象属性下表列出了String对象支持的属性:序号属性&描述实例1.constructor......
  • java 字符串中的编码和解码问题
     ......
  • C++ 字符串拼接技巧(stringstream、字符串迭代器、字符串的加法运算符、std::accumulat
    在C++中,经常需要将多个字符串拼接成一个大字符串。这个过程很容易出错,但有一些技巧可以帮助我们轻松地实现这个目标。本文将介绍一些C++中join字符串的技巧。一、使用stringstreamstringstream是一个流。使用它可以将多个字符串连接起来,然后将它们转换为一个字符串。可......
  • 删除字符使字符串变好
    一个字符串如果没有三个连续相同字符,那么它就是一个好字符串。给你一个字符串s,请你从s删除最少的字符,使它变成一个好字符串。请你返回删除后的字符串。题目数据保证答案总是唯一的。示例1:输入:s="leeetcode"输出:"leetcode"解释:从第一组'e'里面删除一个'......
  • 《剑指Offer》-48-最长不含重复字符串的子字符串
    这题以前做过,和力扣-3重复 intlengthOfLongestSubstring(strings){ //本来应该是用map,但是其实可以使用数组替代,下标对应了字母 unordered_map<char,int>map; intlen=s.size(),maxLen=0;//初始化为0是因为可能字符串长度为0 vector<int>dp(len+1,0);//多......
  • 在Java中操作Redis_Spring Data Redis使用方式_操作字符串类型的数据
        ......
  • 在线代码工具:根据十六进制字符串解析对应的字段值
    说明hexString是字节序是小端的(读值得时候会转为大端来读取值)valueByteSizes是个根据要求顺序读取值得字节大小的数组。例如:newbyte[]{4,2,1},程序会顺序读取hexString字符串:第一个值取4个字节并读取其值,第2个值取2个字节,第3个值取1个字节,4.(如果存在)第4个值取1个字节。......
  • 判断是不是子字符串
    1.题目链接:https://www.nowcoder.com/questionTerminal/5382ff24fbf34a858b15f93e2bd85307给定两个字符串s和t,判断s是否为t的子序列。你可以认为s和t中仅包含英文小写字母。字符串t可能会很长(长度n~=500,000),而s是个短字符串(长度<=100)。字符串的一个子序列是......
  • 字符串分割
    1.题目给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;反之,如果它含有的大写字母比小写字母......