- 2025-01-04Manacher 学习笔记
\(\text{Manacher学习笔记}\)一、引入首先我们需要知道的是\(\text{Manacher}\)是解决回文串问题的有效工具。一个通用的问题模型是给定一个长度为\(n\)的字符串\(s\),统计该字符串中所有的回文子串的个数。\(\text{Manacher}\)算法可以在\(O(n)\)的时间复杂度内解决这
- 2025-01-04pkusc/wc 做题记录
头图Source:qojpkusc2024Day1T1(回文路径)原中原:P4324给定\(2\timesn\)网格,每个格子上有一个字符,考虑一条只能向下和向右走的路径,如果路径上每个字符连成的字符串是回文串,称这条路径是好的,求最长好路径。\(1\len\le10^5\)$\texttt{solution}$枚举回文中心在啥
- 2025-01-03Luogu P4287 SHOI2011 双倍回文 题解 [ 紫 ] [ manacher ]
双倍回文:回文子串结论的经典应用。结论先放本题最关键的结论:一个字符串本质不同的回文子串最多只有\(n\)个。考虑如何证明:假设我们一个一个地在当前字符串(黑色部分)的结尾加入字符(红色部分),那么会出现如下情况:显然,加入红色字符后,字符串中最多只可能新出现一个本质不同的回文
- 2025-01-01力扣 131. 分割回文串
- 2025-01-01Luogu P9646 SNCPC2019 Paper-cutting 题解 [ 紫 ] [ manacher ] [ 贪心 ] [ 哈希 ] [ BFS ]
Paper-cutting:思维很好,但代码很构式的manacher题。蒟蒻2025年切的第一道题,是个紫,并且基本独立想出的,特此纪念。判断能否折叠我们先考虑一部分能折叠需要满足什么条件。显然,这一部分需要是一个长度为偶数的回文串。那么横向和纵向会不会影响呢?答案是不会,因为横向折了之后,折
- 2025-01-01分割回文串(回溯)
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例1:输入:s="aab"输出:[["a","a","b"],["aa","b"]]示例2:输入:s="a"输出:[["a"]]classSolution{public:vector<vector
- 2024-12-30python蓝桥杯刷题4
1.好数题解:首先分析题目要求奇数位上的数字是奇数,偶数位上的数字是偶数。开始解题,定义一个count变量为0,输入一个数字,for循环从1开始遍历到n+1,定义一个x作为一会的判断条件,将数字转换为字符串的形式,使用len函数计算出它的长度,作为坐标,坐标是从0开始到num1的长度。根据坐标去判
- 2024-12-28模拟赛 12.28 总结
A.回文考虑一个串满足要求会是怎样的,他通过左-shift可以变成一个回文串,等价于一个回文串通过右-shift可以变成这个串,那么我们手玩可以发现要么这个串本身就是回文串,要么就是两个回文串且其中有一个长度是偶数拼起来的。首先第一个就不用说了显然满足,第二个的话可以这样想:假设
- 2024-12-26125. 验证回文串
题目链接解题思路:双指针,一个一个对比,跳过非数字字母,对比时,忽略大小写代码classSolution:defisPalindrome(self,s:str)->bool:#双指针i,j=0,len(s)-1whilei<j:#跳过非字母和数字字符while
- 2024-12-26505 最长回文子串2
//505最长回文子串2.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*http://oj.daimayuan.top/course/22/problem/698给定一个长度为n的数组a1,a2,…,an,问其中的最长回文子串长度。定义子串al,al+1,…,ar为回文子串,当且仅当这个子串正着看和反着看是
- 2024-12-25401 最长回文子串
//401最长回文子串.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*http://oj.daimayuan.top/course/22/problem/933给你一个字符串s,字符串由小写字母组成,现在你需要求出s中最长的回文子串的长度。输入格式一行一个字符串s。输出格式输出一个整
- 2024-12-25小U的好字符串
问题描述小U定义了一个“好字符串”,它的要求是该字符串中不包含任意长度不小于2的回文子串。现在小U拿到了一个字符串,她想知道有多少个非空的子序列是“好字符串”。你的任务是帮助她计算出这些子序列的数量。例如,对于字符串 "aba",它的子序列中除了 "aa" 和 "aba" 以外,
- 2024-12-24leetcode 05 回文字符串
leetcode05回文字符串1.描述给你一个字符串,找到里面最长的回文字符串2.事例示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"3.思路3.1什么是回文字串abbaabcba我们把这种不管是从前到后读还是从后到前读都
- 2024-12-23【字符串】-Lc5-最长回文子串(中心扩展法)
写在前面 最近想复习一下数据结构与算法相关的内容,找一些题来做一做。如有更好思路,欢迎指正。目录写在前面一、场景描述二、具体步骤1.环境说明2.代码写在后面一、场景描述 最长回文子串。给你一个字符串s,找到s中最长的回文子串。定义:如果字符串的反
- 2024-12-21ACwing 1524. 最长回文子串
ACwing1524.最长回文子串因为这个题的数据范围只有1000,所以能O(n)枚举,枚举回文子串的中点,然后向两边延展,看看极限长度是多少,注意每次要区分奇数长度字串和偶数长度字串,两种的计算方式不一样。#include<iostream>#include<cstdio>#include<cstdlib>intmain(){ std::s
- 2024-12-21回文链表
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例1:输入:head=[1,2,2,1]输出:true示例2:输入:head=[1,2]输出:false 思路:使用栈来存储节点值,然后开始比对/***Definitionforsingly-linkedlist.*str
- 2024-12-20LeetCode题集-9 - 回文数
题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。01、反转字符串法此题我第一反应就是直接把整数转为字符串,然后通过字符串Reverse方法,反转字符串,最后
- 2024-12-177-273 判断回文串
若一个串正向看和反向看等价,则称做回文串。例如:t,abba,xyzyx均是回文串。给出一个长度不超过60的字符串,判断是否是回文串。输入格式:首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每行输入一个长度不超过60的字符串(串中不包含空格)。输出格式:对于每组测试数据,
- 2024-12-165. 最长回文子串
题目链接解题思路:最长回文子串问题,首先要将原字符串扩充,比如abba,暴力是以每个字符s[i],左右两边扩,如果是abba,得不到最优解,扩充成#a#b#b#a#,就不会有问题,最优解是manacher算法。假设s[i]扩充的区域是[x,y],是目前便利到的,最远的距离,我们称i为回文中心C,y为回文最远右边界R,同时,
- 2024-12-16代码随想录算法训练营第四十六天|leetcode647. 回文子串、leetcode516.最长回文子序列
1leetcode647.回文子串题目链接:647.回文子串-力扣(LeetCode)文章链接:代码随想录视频链接:动态规划,字符串性质决定了DP数组的定义|LeetCode:647.回文子串哔哩哔哩bilibili思路:嘿,看不懂有一点,看解析吧1.1视频后的方法其实看完视频以后,感觉这个题目真的不难,我想到了二维
- 2024-12-14leetcode 866. 回文质数
866.回文质数想着开大数组,用质数筛选的方法。但是开大数组超内存了
- 2024-12-14代码随想录算法训练营第四十六天|LeetCode647.回文串、LeetCode516.最长回文子序列
前言打卡代码随想录算法训练营第49期第四十六天 ε(*′・∀・`)з゙首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。LeetCode647
- 2024-12-13Manacher
Manacher,O(n)求字符串最长回文子串的良心算法首先,求最长回文字串的两个个方法,第一个是将所有字串列出来然后逐个判断,时间复杂度高达O(n3),这里不多赘述,然后就是选择一个字符,向两边扩展,判断是否相等,相等则长度自增。时间复杂度高达O(n2)然后就是可以用hash来判断回文,时间复杂度为O
- 2024-12-12leetcode 125. 验证回文串
125.验证回文串二刷,用时3ms,内存9.81MB一定要注意,是移除所有除了数字、字母以外的字符classSolution{public://'a'-'A'=32boolisPalindrome(strings){intleft=0,right=s.size()-1;while(left<right){while(left<
- 2024-12-10【洛谷】P1217 [USACO1.5] 回文质数(AC详解)
#include<iostream>//引入输入输出流头文件,用于实现标准输入输出操作,例如使用cin和cout#include<cmath>//引入数学函数库头文件,主要用于调用sqrt函数来求平方根,辅助判断质数usingnamespacestd;//函数声明,用于判断一个整数是否为质数,接收一个整数参数,返回布尔值