题目要求:使用递归方式判断某个字串是否是回文( palindrome )回文”是指正着读、反着读都一样的句子。比如“我是谁是我” 设计思路:利用布尔类型输出是否为回文串; 采用递归的形式 依次前后移动。并前后进行对比;从而判断是否回文; 课后总结: 采用递归的形式进行判断,程序会更加简洁,运行速率会 ...
分类:
其他好文 时间:
2019-09-25 19:59:32
阅读次数:
106
题意 有AGTC四种字符,一开始有一个空串,每次操作,可以在首或尾加任意个字符,或者将已有字符镜面复制(左右两种复制方法),要求最少的操作步数使得得到给出的字符串 Solution: 我们要知道我们要求的是什么,是每一给回文串的所需要的最少的构造操作加上n-这个串的长度 然后就考虑如何求前者 题解: ...
分类:
其他好文 时间:
2019-09-24 20:58:57
阅读次数:
78
用递归来判断回文串 思路: ①首先如果是空串,一个字符,则判断是回文串 ②若不满足①,则我们需要对字符串进行递归判断,我们会想到要用第一个字符和最后一个字符进行比较,若相同则,第二个和倒数第二个进行比较,如此循环往复,就会出现一个终点 ③终点处会出现两种情况,第一种情况:两个不同位置的字符进行比较, ...
分类:
编程语言 时间:
2019-09-24 14:05:34
阅读次数:
62
由样例可知,题目中求的回文串数量,其实是本质不同的回文串数量,这个可以直接用回文树来做。 考虑前半段是回文串这个限制,这个东西回文树不好做,可以再套一个马拉车,然后记录一下插入到回文树的节点中最后一个字符的位置,使用马拉车快速判断这一段的前半段是不是回文串 ...
分类:
其他好文 时间:
2019-09-23 22:32:59
阅读次数:
100
//字符串处理 回文串 #include<iostream> #include<string.h> using namespace std; const int maxn=256; bool judge(char str[]) { int len =strlen(str); for(int i=0;... ...
分类:
其他好文 时间:
2019-09-23 16:42:00
阅读次数:
122
一、复杂度 构造回文树需要的空间复杂度为O(N*字符集大小),时间复杂度为O(N*log(字符集大小)) 二、应用 1、求串S前缀0~i内本质不同回文串的个数(两个串长度不同或者长度相同且至少有一个字符不同便是本质不同) 2、求串S内每一个本质不同回文串出现的次数 3、求串S内回文串的个数(其实就是 ...
分类:
其他好文 时间:
2019-09-17 22:39:39
阅读次数:
101
题目1:LintCode 108 Palindrome Partitioning II 题目2:LintCode 108 Palindrome Partitioning II 将字符串每一段划分成字符串最少划分几次 划分最少,也就是回文串最长 确定状态: 最后一段回文串S[j..N-1] 需要知道S ...
分类:
其他好文 时间:
2019-09-16 00:16:10
阅读次数:
87
题意 给你一个正整数 $n$,求有多少字符集为 $1$ 到 $k$ 之间整数的字符串,使得该字符串可以由一个长度为 $n$ 的回文串循环移位得到。 ARC原题 $100\%$ 的数据是 $n,k\le 10^9$ SDOI改编后,$30\%$ 的数据是 $n,k\le 10^{10}$,$60\%$ ...
分类:
其他好文 时间:
2019-09-14 19:03:48
阅读次数:
73
回文自动机裸题,把PAM建出来以后对每个节点更新答案即可 代码: ...
本质不同回文串个数 tot-1; #include<bits/stdc++.h> #define ll long long #define LL long long using namespace std; const int maxn=2e5+10; const int num=26; char ...
分类:
其他好文 时间:
2019-09-13 17:40:34
阅读次数:
55