回文
马拉车(manacher) & 回文自动机(PAM)
读了徐安矣2023年集训队论文写的,对于差分性质和习题,我会在理解清楚之后再补充。本篇博客仅讨论前两种算法。 首先,马拉车和回文自动机都是处理回文串问题的。但在此之前,学习一些更加简单的回文算法。 小 trick:把给定串的两头和缝隙插入相同字符,且在边界处用不同字符标记,使得长度为偶数的回文串和长 ......
力扣——5.最长回文子串(c语言)
题目描述: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例2: 输入: "cbbd" 输出: "bb" 1、思路1:动态规划 对于一个子串而言,如果它是回文子 ......
leetcode-234回文链表
回文链表 方法一:借助数组进行判断 把节点的值复制到一个数组中再利用数组进行判断,但是这样需要占用额外的空间 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Lis ......
4/20 C语言判断字符串是否为回文,字符串中可以包含中文和英文
//已知中文字符占用两个字节#include <stdio.h> #include <string.h> bool judge(char* a, int& i, int& k); int main() { int i, k; char a[100]; while (scanf("%s", a) != ......
LeetCode Top100:回文链表 (python)
LeetCode Top100:回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1] 输出:true 示例 2: 输入:head = [1,2] 输出:false 提示: ......
【DP】LeetCode 132. 分割回文串 II
题目链接 132. 分割回文串 II 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[ ......
寻找回文数
一、问题描述: 寻找并输出11~999的数m,它满足m、m2和m3均为回文数。 回文数 所谓回文数是指其各位数字左右对称的整数。例如:121、676、94249等。满足上述条件的数如m=11,m2=121,m3=1331. 二、设计思路: 从11~999遍历每个数; 判断是否为回文数,用除以10取余 ......
最长回文子串
参考:力扣 关于回文串 "回文串”(palindromic string)是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。 方式一:动态规划 由外而内,外层是否是回文字符串取决于首尾是否相等+内层是否是回文字符串 (内层字符长度大于1) 复杂度分析 两层关于规模n的 ......
409. 最长回文串
问题描述 给定一个字符串s, 返回由s中字母所构造的最长回文串的长度。 问题分析 符号设定 N~ch~ 为ch在回文串中出现的次数 回文串中最多有一个字符N~ch~为奇数 算法 class Solution: def longestPalindrome(self, s: str) -> int: c ......
回文数
题目描述 难度简单 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而 123 不是。 示例 1: 输入:x = 121 输出:true 示例 2: 输入:x = -12 ......
回文自动机(PAM)
瞎扯,不做教程。 回文自动机是接受串 $s$ 所有本质不同回文子串的类自动机结构。 考察该类自动机结构的转移边上字符的含义,因为回文串是回文的,所以从 $s$ 转移到 $t$ 应该在 $s$ 所代表的字符串两边均加上转移边上的字符 $c$。 这样就会有一个问题:考虑每次走转移边字符串长度都增加 $2 ......
131. 分割回文串
class Solution { public: bool check(string s) { int n=s.size(); for(int i=0;i<n/2;i++) if(s[i]!=s[n-i-1]) return false; return true; } vector<vector<s ......
算法-回文链表-24
/** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * public ListNode(int x) { val = x; } * } ......
最长回文子串
题目描述 难度中等 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2: 输入:s = "cbbd" 输出:"bb" 提示: 1 ......
回文方阵
#include<stdio.h> #include<string.h> #define MAXN 10 int a[MAXN][MAXN]; int main() { int n,t=0; while(scanf("%d",&n)!=EOF) { memset(a,0,sizeof(a)); t= ......
131. 分割回文串
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 版本一 class Solution { private: vector<vector<string>> result; vector<string> ......
回文数(函数)
寻找并输入11~999的数吗,它满足m,m2,m3均为回文数。 分析:判断一个数是否回文,可以用除以10取余的方法,依次取出该数的各位数字,然后用最低位充当最高位按反序重新构成新的数字,比较与原数是否相等。 #include<iostream>using namespace std;bool sym ......
1147. 段式回文
题目链接:1147. 段式回文 方法:贪心 解题思路 若左右较长的字符段能相同,那么将其分为较小的字符段也能相同,因此在最开始判断时,就要遵循原则:能拆尽拆,将其拆为最多字符段的情况。 代码 class Solution { public: int longestDecomposition(stri ......
力扣---1147. 段式回文
你会得到一个字符串 text 。你应该把它分成 k 个子字符串 (subtext1, subtext2,…, subtextk) ,要求满足: subtexti 是 非空 字符串所有子字符串的连接等于 text ( 即subtext1 + subtext2 + ... + subtextk == t ......
[C++]LeetCode1147. 段式回文
[C++]LeetCode1147. 段式回文 题目描述 Difficulty: 困难 Related Topics: 贪心, 双指针, 字符串, 动态规划, 哈希函数, 滚动哈希 你会得到一个字符串 text 。你应该把它分成 k 个子字符串 (subtext1, subtext2,…, subt ......
段式回文
你会得到一个字符串 text 。你应该把它分成 k 个子字符串 (subtext1, subtext2,…, subtextk) ,要求满足: subtexti 是 非空 字符串 所有子字符串的连接等于 text ( 即subtext1 + subtext2 + ... + subtextk == ......
P6216 回文匹配
回文匹配 /* 这里sum表示一维前缀和 sum(r-m+1) - sum(l-1) sum(r-m+1-i) - sum(l-1+i) 所以应该是使用二位前缀和来进行处理 len/2也就是我半径需要的最小长度 有些难模拟,但是就是二维前缀和 最后统计答案的地方是真的绕 */ #include <b ......
回文树
具体思想不多说 struct node{ int son[26]; int len; int fail; }t[N]; int cnt = 1,last = 0; void init(){ t[0].fail = 1; t[1].len = -1; } int getfail(int p,int r ......
PAT Basic 1079. 延迟的回文数
PAT Basic 1079. 延迟的回文数 1. 题目描述: 给定一个 $k+1$ 位的正整数 $N$,写成 $a_k⋯a_1a_0$ 的形式,其中对所有 $i$ 有 $0≤a_i<10$ 且 $a_k>0$。$N$ 被称为一个回文数,当且仅当对所有 $i$ 有 $a_i=a_{k−i}$。零也被 ......
2217. 找到指定长度的回文数
题目描述 给了一个正整数k,表示长度是k的所有回文数字 再给了和很多q,问第q小的数字是多少? f1 数学关系+构造 基本分析 从q之间的相互关系考虑还是单独考虑某个q和结果的关系?后者 长度是k的回文数字有啥特性?前一半数字是固定的,half = k + 1 >> 2, str[num][:hal ......
1616. 分割两个字符串得到回文串
题目链接:1616. 分割两个字符串得到回文串 方法:模拟 + 双指针 解题思路 题目要求,找一个合适的下标 $idx$ 将 $a$ 分割为 $a[0, idx]$ 和 $a[idx + 1, n - 1]$,同样的 $b$ 分割为 $b[0, idx]$ 和 $b[idx + 1, n - 1]$ ......
链表的回文判断—Java实现
对于这个题,主要是老是局限于方法内的变量,未想到借助外部变量辅助:具如下,不可用数除法,会溢出异常:即使是取最大的long也会溢出,常规方法不再赘述,具体以代码如下: 1 package ProblemSolve; 2 3 public class Solution5 { 4 private Lis ......
回文日期
2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。 有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同, ......
P6216 回文匹配
#回文匹配 题目描述 对于一对字符串 $(s_1,s_2)$,若 $s_1$ 的长度为奇数的子串 $(l,r)$ 满足 $(l,r)$ 是回文的,那么 $s_1$ 的“分数”会增加 $s_2$ 在 $(l,r)$ 中出现的次数。 现在给出一对 $(s_1,s_2)$,请计算出 $s_1$ 的“分数” ......