首页 > TAG信息列表 > 原串

125. 验证回文串--LeetCode

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/valid-palindrome 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 朴素做法 对原串做一些处理(过滤不需要的字符,统一字符大小写) 从尾到头遍历一次串,再与处理后的原串比较,如果一样就是回文串 否则就

ARC060F口胡

诈 骗 题 我一直以为是 DP 什么的有性质,结果发现是道诈骗题,什么性质都没有。 首先特判掉全 \(a\) 串。有一个结论:全场最佳只有可能是两个字符串组成的。 随便证明一下。设 \(S[i]\) 是长度为 \(i\) 的前缀,\(T[i]\) 是长度为 \(i\) 的后缀。 首先对于 \(S[i](2i\geq n)\) 和 \(T[i]

【Luogu P2870】[USACO07DEC]Best Cow Line G

链接: 洛谷 题目大意: 给定一个串,每次选择最前或最后的字符,求最后能得到字典序最小的串。 正文: 贪心时遇到 \(\texttt{BACB}\) 这样的串时,不能随便选,于是想到了后缀数组。那么取最后的字符,就相当于把原串反过来。所以先对原串如此处理:\(S'=S+\texttt{@}+\bar{S}\),其中 \(\texttt{@}

后缀数组

P4051 [JSOI2007]字符加密 经典trick,很显然的是看到题目,就是后缀排序,然后如果你加一段原串到尾部,然后再进行后缀排序,会发现,\([1,n]\) 之间的后缀的相对位置关系没有发生变化,因为他们同时加上了相同的后缀,没有变化,所以直接排完序输出即可。

20210604

T1 搜索剪枝优化。 使用迭代加深搜索,然后弄一个估价函数,即相差>1的相邻数对的数量,加上求出解就不继续搜索即可通过。 比较奇妙,复杂度玄学。 T2 显然对于一条链,每次只能删一个。那么将图缩点形成 DAG ,然后求最长链的长度即为答案。 T3 一道奇妙的AC自动机上跑状压DP的题。 首先将原

「arc113E」Rvom and Rsrev 题解

题意 \(~~~~\) 有一个仅由 a 和 b 组成的字符串 \(s\)。每次可以选择两个位置分别为 \(l,r\) 且 \(s_l = s_r\) 并将 \(s[l \cdots r]\) 一段翻转后删除 \(s_l,s_r\)。问经过最多无限次操作可以操作出来的字典序最大的字符串是什么。 题解 大力分类讨论题,恶心心。 \(\sf 1\) 若

1493 C. K-beautiful Strings(从后往前贪心[官方题解])

LINK 另一种解法,自己的解法 转自官方题解 我们最好的答案是和原串 s s s相等 如果达不到,就看一下前 n −

SAM 后缀自动机

这玩意还真的好玄学,看了半天,也就看了个大概吧 确实很妙 总算理解了parent树,但是关于SAM的DAG的性质的证明并没有看太懂,也没有特别明白。。。 update:又看了一会,原来是自己把定义搞错了,后缀自动机其实是在满足以下条件的最简状态,主要是难构造,掌握构造代码就好了,证明就不管了c。 条件

KMP

KMP算法 解决的问题思想模版 解决的问题 字符串匹配问题,给定一个目标匹配串,一个模式串,在目标匹配串中查找模式串,若匹配串长度n,模式串长度m,可以将时间复杂度从 O ( n

蓝桥杯练习 | Bit Compressor

问题描述 数据压缩的目的是为了减少存储和交换数据时出现的冗余。这增加了有效数据的比重并提高了传输速率。有一种压缩二进制串的方法是这样的: 将连续的n个1替换为n的二进制表示(注:替换发生当且仅当这种替换减少了二进制串的总长度) (译者注:连续的n个1的左右必须是0或者是串的开头、

「SNOI2019」字符串

题目链接:Click here Solution 事实上,我们发现我们比较的两个字符串是极为相似的 设我们当前要比较的两个字符串为\(s_x\)和\(s_y\),而他们不同的地方就在于原串\(x\sim y\)的部分 而这一部分也是十分相似的,准确的来说,他们对应的位置在原串中事实上是位置相邻的点 则我们只需要记录

没有来源的题(似乎是什么POI?) 字符串——最小表示法

【题目描述】​ 给你两个长度为 \(n\) 的字符串,问能否通过将某一字符串的一个前缀接到该串的后面使得两个字符串相等。若可以,你还可能被要求输出通过上述操作所能得到的字典序最小的字符串。 【输入格式】 ​ ​ 第一行两个整数 \(n,T\)。 ​ 接下来两行,每行一个长度为 \(n\) 的字

【程序员面试金典】原串翻转

题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。 测试样例: “This is nowcoder” 返回:“redocwon si sihT” C++

今日感想

由于几个递归式子经常挂,改也改不对,看了题解,明白了我没用利用好递归式的副作用带来的“不同”,导致了TLE+MLE…… updata:2019.7.1 一个字符串的最长回文子序列的长度等于它和它的反转串的最长公共子序列的长度。 为什么?首先字符串的最长回文子序列在字符串反转后依然保持原有形态,各部

原串翻转

题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。 测试样例: "This is nowcoder" 返回:"redocwon si sihT" # -*- coding:u

python第二十一课——str中的常用函数(重要)

演示str中常用的一些函数:1.join():将容器对象以某种特定的格式(字符串)进行拼接组合,最后以字符串的形式返回 lt=['i','love','you','very','much']str1='-'.join(lt)print(str1,type(str1))print(str.join('*',lt))print(' '.join(lt