LeetCode 1392. 最长快乐前缀(KMP)

1. 题目

「快乐前缀」是在原字符串中既是 非空 前缀也是后缀(不包括原字符串自身)的字符串。

给你一个字符串 s,请你返回它的 最长快乐前缀。

如果不存在满足题意的前缀,则返回一个空字符串。

示例 1:
输入:s = "level"
输出:"l"
解释:不包括 s 自己,一共有 4 个前缀("l", "le", "lev", "leve")和 4 个后缀("l", "el", "vel", "evel")。
最长的既是前缀也是后缀的字符串是 "l" 。示例 2:
输入:s = "ababab"
输出:"abab"
解释:"abab" 是最长的既是前缀也是后缀的字符串。题目允许前后缀在原字符串中重叠。示例 3:
输入:s = "leetcodeleet"
输出:"leet"示例 4:
输入:s = "a"
输出:""提示:
1 <= s.length <= 10^5
s 只含有小写英文字母

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-happy-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 暴力法,c++ 17 string_view 解决内存占用问题
class Solution {
public:string longestPrefix(string s) {string_view sv = s;int n = s.size(), i;for(i = n-1; i >= 1; --i){if(sv.substr(0,i) == sv.substr(n-i,i))break;}return s.substr(0,i);}
};
  • kmp 字符匹配
    类似题目:
    POJ 3461 字符串匹配(KMP / 哈希(有推导))
class Solution {
public:string longestPrefix(string s) {vector<int> next(s.size()+1);calNext(next, s);return s.substr(0,next.back());}void calNext(vector<int> &next, string& s){	//字符串中前缀与后缀的最长匹配长度//next[j]=k , 在j之前的子串的最长匹配长度为kint j = 0, k = -1;next[0] = -1;while(j < s.size()){if(k == -1 || s[j] == s[k])// 有[0, ..., k-1]与[j-k, ..., j-1] 匹配, 同时 s[j] == s[k]next[++j] = ++k;//匹配长度增加 1, 查看下一个匹配位置elsek = next[k];//不匹配, 当前查看的前缀太长, k跳回到上一个可能的匹配位置}}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火到海外破圈!这个国产AI项目GitHub标星8.6k,价值千万

Q&#xff1a;最顶尖的AI技术到底离我们有多远&#xff1f; A&#xff1a;三行Python代码的距离。 导读 今天小编为大家推荐一个AI领域相当优秀的项目&#xff0c; 粗略估计&#xff0c;这个项目价值超过千万&#xff0c; 当前star 8.6k&#xff0c;大胆预判&#xff0c;这个项…

让互联网助小组合作一臂之力

利用互联网实现小组合作&#xff0c;目前显然还有诸多不便&#xff0c;原因何在&#xff1f;许多人都在网上实现了互联&#xff0c;小组合作似乎应该有诸多便利。但为什么维护一个可供小组其他成员共享和编辑的文件夹依然困难重重&#xff1f;为什么如果大家不使用相同的即时通…

程序员面试金典 - 面试题 10.05. 稀疏数组搜索(二分查找)

1. 题目 稀疏数组搜索。有个排好序的字符串数组&#xff0c;其中散布着一些空字符串&#xff0c;编写一种方法&#xff0c;找出给定字符串的位置。 示例1:输入: words ["at", "", "", "", "ball", "", "&…

颤抖吧,打工人!Meta研发裁员算法,Xsolla用AI模型打绩效??

撰稿丨千山审校丨云昭来源丨51CTO技术栈这几个月来&#xff0c;微软、谷歌、甲骨文、苹果等一众科技巨头纷纷裁员。日前&#xff0c;Meta成为又一家启动大规模裁员的科技公司。在这波裁员潮中&#xff0c;Meta的操作引起了诸多争议。争议焦点在于它将裁员的决定权“交”给了算法…

android制作相册浏览器_一分钟简单制作一个专属于自己的卡通头像

制作一个专属于自己的卡通头像很简单&#xff0c;我们常用的美图秀秀软件就可以轻松制作。首选在应用市场搜索美图秀秀下载后选择工具箱打开&#xff0c;找到实用工具中的动漫化身这个选项&#xff1b;打开后点击绘制动漫形象&#xff0c;可以在相册中选择一张提前保存好的头像…

用MS SQL Server事件探查器来跟踪数据库的操作

在MS SQL Server中&#xff0c;除了我们常用的企业管理器和查询分析器之外&#xff0c;还有一个非常有用的工具——事件探查器。由于这两天&#xff0c;我需要知道一个ASP.NET程序对某个数据库的哪些表进行了哪些操作&#xff0c;所以才发现了这个工具的好处&#xff01; …

程序员面试金典 - 面试题 05.02. 二进制数转字符串(浮点型 转 二进制小数,乘2取整)

1. 题目 二进制数转字符串。给定一个介于0和1之间的实数&#xff08;如0.72&#xff09;&#xff0c;类型为double&#xff0c;打印它的二进制表达式。 如果该数字不在0和1之间&#xff0c;或者无法精确地用32位以内的二进制表示&#xff0c;则打印“ERROR”。 示例1:输入&a…

blob数据类型_MySQL的数据类型

一,MySQL的数据类型数据类型是定义列中可以存储什么类型的数据以及该数据实际怎样存储的基本规则数据类型限制存储在数据列列中的数据。例如&#xff0c;数值数据类型列只能接受数值类型的的数据在设计表时&#xff0c;应该特别重视所用的数据类型。使用错误的数据类型可能会严…

仿真方面的文章

仿真方面的文章&#xff1a;献给初学者 promodel, em_plant离散事件系统仿真技术主要用于解决复杂系统管理中的决策问题&#xff0c;这里的管理具有广泛的意义&#xff0c;既可以是企业&#xff0c;工作的计划&#xff0c;调度和销售管理&#xff0c;也可以是导弹防御&#xff…

科技部发布新规:论文挂名属于学术不端,记入科研诚信数据库!

文 | 募格学术源 | 科技日报、科技部时隔三年后&#xff0c;《科研诚信案件调查处理规则&#xff08;试行&#xff09;》迎来修订版。9月14日&#xff0c;科技部、中央宣传部等二十二部门印发《科研失信行为调查处理规则》&#xff08;以下简称《规则》&#xff09;&#xff0c…

C++ 内存对齐 及 引用是否真的节省内存的一点思考

文章目录1. 内存对齐2. 递归中的内存对齐3. C引用的本质4. 致谢1. 内存对齐 通过以下语句&#xff0c;获取变量的占用内存打下&#xff1a; cout << "size of int " << sizeof(int) << endl; cout << "size of int& " <&…

小问题,对递归重复调用的改进,一起来分享

Problem设有一头小母牛&#xff0c;从出生第四年起每年生一头小母牛&#xff0c;按此规律&#xff0c;第N年时有几头母牛&#xff1f; Input本题有多组数据。每组数据只有一个整数N&#xff0c;独占一行。(1≤N≤50) Output对每组数据&#xff0c;输出一个整数&#xff08;独…

拦截游戏窗口被移动_Ruined King官网版-拳头rpg Ruined King游戏最新版下载v1.0

Ruined King是一款暗黑风格的动作冒险类手游&#xff0c;游戏采用回合制战斗方式为玩家进行呈现&#xff0c;多种强大的英雄需要玩家进行召集&#xff0c;大幅度提升角色的战斗力&#xff0c;丰富的任务等着玩家来完成&#xff0c;游戏中还有非常经典的剧情让玩家进行了解&…

AI开始卷高考了,英语已被卷到134分??

文 | 天于刀刀AI 真的太卷了&#xff01;不但模型之间互相卷&#xff0c;现在直接开始和人类学生一起卷高考了&#xff01;近期&#xff0c;来自 CMU 两位学者提出的重构预训练模型&#xff08;reStructured Pre-training, RST&#xff09;在只有 GPT-3 十六分之一参数量的情况…

(待解)静态构造器和静态字段调用的相互嵌套

示例代码&#xff1a;usingSystem;classA{ public static int X; static A() { X B.Y 1; }}classB{ public static int Y A.X 1; static B() {} static void Main() { Console.WriteLine("X {0}, Y {1}", A.X, B.Y); }}程序输出&#…

程序员面试金典 - 面试题 04.12. 求和路径(二叉树递归)

1. 题目 给定一棵二叉树&#xff0c;其中每个节点都含有一个整数数值(该值或正或负)。 设计一个算法&#xff0c;打印节点数值总和等于某个给定值的所有路径的数量。 注意&#xff0c;路径不一定非得从二叉树的根节点或叶节点开始或结束&#xff0c;但是其方向必须向下(只能…

一款三搭_冬日穿搭指南!照着这八条万能公式穿,让你不冻还有型_

就用我多年看搭配的经验为大家总结了8条万能公式&#xff01;想要做百岁老人的&#xff0c;冬天穿搭以下每一套都需要穿打底裤的哦&#xff01;&#xff01;&#xff01;公式一&#xff1a;大衣毛衣九分裤同色系袜子是画龙点睛之笔。同时大衣、毛衣和包包也是同色系&#xff0c…

pytorch可视化教程:训练过程+网络结构

文 | 锦恢知乎&#xff08;已授权&#xff09;源 | 极市平台一、网络结构的可视化我们训练神经网络时&#xff0c;除了随着step或者epoch观察损失函数的走势&#xff0c;从而建立对目前网络优化的基本认知外&#xff0c;也可以通过一些额外的可视化库来可视化我们的神经网络结构…

从今天起,开始等待中信世界杯信用卡

特喜欢卡面上克林斯曼凌空一脚的冲击性画面&#xff01;今早上填的申请表&#xff0c;工作人员说会在十四个工作日内答复。现在&#xff0c;作会梦先&#xff1a;&#xff09; 转载于:https://www.cnblogs.com/notus/archive/2006/06/14/425654.html

程序员面试金典 - 面试题 05.07. 配对交换(位运算)

1. 题目 配对交换。编写程序&#xff0c;交换某个整数的奇数位和偶数位&#xff0c;尽量使用较少的指令&#xff08;也就是说&#xff0c;位0与位1交换&#xff0c;位2与位3交换&#xff0c;以此类推&#xff09;。 示例1:输入&#xff1a;num 2&#xff08;或者0b10&#x…