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

力扣2156.查找给定哈希值的子串

力扣2156.查找给定哈希值的子串

  • rolling hash:求带权的值 左边是高位 右边是低位

    • 本题要求左边低位 只要反向求即可
  •   class Solution {public:string subStrHash(string s, int power, int modulo, int k, int hashValue) {int n = s.size();long long M = modulo,pk=1,hash = 0;//预处理k个 并求出p^k-1for(int i=n-1;i>=n-k;i--){hash = ((long long)hash*power + (s[i] - 'a' + 1)) % M;if(i != n-k) pk = (long long)pk*power%M;}int pos = -1;if(hash == hashValue) pos = n-k;for(int i=n-k-1;i>=0;i--){//把右边高位减掉hash = hash - (s[i+k] - 'a' + 1) * pk % M;//防止hash减完成负数hash = (hash + M) %M;//整体左移(升高一位)hash = hash * power % M;//加上左边低位hash = (hash + s[i]-'a'+1) % M;if(hash == hashValue){pos = i;}}return s.substr(pos,k);}};
    
http://www.lryc.cn/news/365380.html

相关文章:

  • 推荐低成本低功耗的纯数字现场可重构IC
  • 解决change事件与blur事件互不影响
  • 后端开发面经系列 -- 同程旅行C++一面
  • 推荐几个开源的c#的工作流引擎组件
  • 视频汇聚EasyCVR视频监控云平台对接GA/T 1400视图库对象和对象集合XMLSchema描述
  • 【JavaScript脚本宇宙】瞬息万变:探索实时Web应用的JavaScript库
  • Java数据结构与算法(有向无环图)
  • QuanTA: 一种新的高秩高效微调范式
  • 【漏洞复现】用友NC downCourseWare 任意文件读取漏洞
  • 度安讲 | 第二期「安全左移·业务护航」技术沙龙成功举办
  • 代码片段 | Matlab三维图显示[ R T 0 1] 的最佳方法
  • 2024百度之星 跑步
  • 【git】TortoiseGitPlink Fatal Error 解决方法
  • 行心科技|中科利众:健康科技新合作,营养与科技融合前行
  • Xcode 打包报错Command PhaseScriptExecution failed with a nonzero exit code
  • 使用 IPSET 添加 CDN 节点 IP(IPv4/IPv6)到防火墙白名单
  • oracle trim 函数很慢,加trim以后执行超慢,执行计划求解
  • 【Leetcode Python】
  • Ubuntu系统的k8s常见的错误和解决的问题
  • Scala学习笔记7: 对象
  • 【Linux】进程切换环境变量
  • 嵌入式学习记录6.6(拷贝构造/友元函数/常成员函数)
  • 宝塔 nginx 配置负载均衡 upstream
  • idea 插件推荐
  • 【Linux】Linux环境基础开发工具_5
  • Java Web学习笔记15——DOM对象
  • 中电联系列一:rocket手把手教你理解中电联协议!
  • (面试官问我微服务与naocs的使用我回答了如下,面试官让我回去等通知)微服务拆分与nacos的配置使用
  • 冯喜运:6.7今日黄金原油行情分析及独家操作策略
  • Android 蓝牙概述