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

1392. 最长快乐前缀

链接:

1392. 最长快乐前缀

题解:

class Solution {
public:string longestPrefix(string s) {if (s.size() <= 0) {return "";}int MOD = 1e9 + 7;// 构建26的n次方,预处理std::vector<long> pow26(s.size());pow26[0] = 1;for (int i = 1; i < pow26.size(); ++i) {pow26[i] = (pow26[i-1] * 26)%MOD;}// 构建前向hashstd::vector<long> prefix_hash(s.size());prefix_hash[0] = s[0] - 'a';for (int i = 1; i < prefix_hash.size(); ++i) {prefix_hash[i] = (prefix_hash[i-1] * 26 + (s[i]- 'a')) % MOD;}// 构建后面的hashstd::vector<int> post_hash(s.size());post_hash[s.size()-1] = s[s.size()-1] - 'a';for (int i = s.size()-2; i >= 0; --i) {post_hash[i] = ((s[i] - 'a') * pow26[s.size()-i-1] + post_hash[i+1])%MOD;}for (int len = s.size()-1; len >= 1; --len) {// 判断字符串是否相等if (prefix_hash[len-1] == post_hash[s.size()-len] &&equal(s, 0, len-1 , s.size() - len, s.size()-1)) {return s.substr(0, len);}}return "";}
private:bool equal(const std::string& a, int l1, int r1, int l2, int r2) {for (; l1 <= r1 && l2 <= r2; ++l1, ++l2) {if (a[l1] != a[l2]) {return false;}}return true;}
};

http://www.lryc.cn/news/183828.html

相关文章:

  • 【C++设计模式之备忘录模式:行为型】分析及示例
  • 数据结构与算法(四):哈希表
  • FFmpeg 命令:从入门到精通 | ffplay 播放控制选项
  • 代码随想录day59
  • 【小工具-生成合并文件】使用python实现2个excel文件根据主键合并生成csv文件
  • 【论文阅读】An Evaluation of Concurrency Control with One Thousand Cores
  • 网页版”高德地图“如何设置默认城市?
  • 小谈设计模式(8)—代理模式
  • queryWrapper的使用教程
  • 数组模拟双链表
  • 鸡群优化(CSO)算法(含MATLAB代码)
  • 3. 安装lombok maven镜像设置
  • 详谈Spring
  • PyTorch入门之【AlexNet】
  • (六)正点原子STM32MP135移植——内核移植
  • 自媒体工作内容管理助手
  • Echarts 教程一
  • 【Kubernetes】Kubernetes 对象是什么?
  • 【C++设计模式之模板模式】分析及示例
  • C#捕捉全局异常
  • java.text.ParseException: Unparseable date: “2023-09-06T09:08:18“
  • macOS 下如何优雅的使用 Burp Suite 汉化
  • 进程同步与进程互斥
  • 公司安防工程简要介绍及系统需求分析
  • JMETER自适应高分辨率的显示器
  • Linux工具(三)
  • 基于SSM+Vue的鲜花销售系统设计与实现
  • 矢量图形编辑软件illustrator 2023 mac特点介绍
  • 【计算机网络面试题(62道)】
  • JVM-满老师